typestar

Funciones de trigger en SQL

Un piso de inventario impuesto por la tabla misma: el trigger corre en cada update.

-- A trigger function sees NEW and OLD; the trigger wires it to a table.
CREATE FUNCTION guard_stock()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
    IF NEW.stock < 0 THEN
        RAISE EXCEPTION 'stock for % cannot go below zero', NEW.sku;
    END IF;
    RETURN NEW;
END;
$$;

CREATE TRIGGER stock_floor
BEFORE UPDATE ON products
FOR EACH ROW
EXECUTE FUNCTION guard_stock();

-- A legal update sails through the guard.
UPDATE products
SET stock = 3
WHERE sku = 'PFD-M';

SELECT sku, stock
FROM products
WHERE sku = 'PFD-M';

Cómo funciona

  1. Las funciones RETURNS trigger ven los valores de fila NEW y OLD.
  2. RAISE EXCEPTION veta la escritura; devolver NEW la deja pasar.
  3. CREATE TRIGGER ... BEFORE UPDATE ... FOR EACH ROW lo cablea a products.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
26
Caracteres a escribir
507
Tokens
79
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 73 segundos.

Escribe este fragmento

Paso 4 de 4 en Errores y triggers; paso 20 de 23 en Procedimientos almacenados de PostgreSQL.

← Anterior Siguiente →