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
- Las funciones
RETURNS triggerven los valores de filaNEWyOLD. RAISE EXCEPTIONveta la escritura; devolverNEWla deja pasar.CREATE TRIGGER ... BEFORE UPDATE ... FOR EACH ROWlo cablea a products.
Palabras clave y builtins usados aquí
ASBEFOREBEGINCREATEEACHENDEXCEPTIONEXECUTEFORFROMFUNCTIONIFLANGUAGENEWONRETURNRETURNSROWSELECTSETTHENTRIGGERUPDATEWHEREtrigger
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.
Paso 4 de 4 en Errores y triggers; paso 20 de 23 en Procedimientos almacenados de PostgreSQL.