Crearea unei funcții de declanșare - stadopedia

Argumentele specificate în comanda CREATE TRIGGER. Indexarea unei matrice pornește de la zero

Listing 6.44 prezintă un exemplu de definire a unei funcții de declanșare PL / pgSDL care utilizează unele dintre variabilele enumerate. Funcția de declanșare check_shipment_ad-dition () este invocată după operația INSERT sau UPDATE cu tabelul de transporturi.

Funcția check_shipment_addition () se asigură că fiecare nouă înregistrare conține un număr de identificare valid de client și ISBN al cărții. Apoi, numărul total de exemplare în stoc tabelul a scăzut cu 1 în cazul în care declanșatorul este declanșat de comandă SQL INSERT (dar nu pe UPDATE comanda!)

Listing 6.44. Funcția de declanșare check_shipment_addition ()

CREAȚI SAU REPLACE FUNCTION books.check_shipment_addition ()

RETURNS trigger AS

-- Dacă în tabelul clienților există un cod care corespunde codului

-- cumpărător în tabelul nou, alocați-l la variabila id_number.

SELECT IN id_number id DE LA books.customers WHERE id = NEW.customer_id;

-- Dacă nu se găsește niciun rezultat, inițiați o excepție.

DACĂ NU ESTE NECESARĂ

RAISE EXCEPTION "Număr de identificare client nevalid. ';

-- Dacă există un cod ISBN în tabelul de ediții care corespunde codului

-- ISBN în tabelul nou, alocați-l variabilei book_isbn.

SELECTAȚI ÎN carte_isbn isbn FROM books.editions WHERE isbn = NEW.isbn;

-- Dacă nu se găsește niciun rezultat, inițiați o excepție.

DACĂ NU ESTE NECESARĂ

EXCEPȚIA EXTINSAȚIEI "ISBN nevalid.";

-- Dacă ambele verificări anterioare au fost finalizate cu succes,

-- Actualizați numărul de instanțe.

Dacă TG_OP = 'INSERT' THEN

UPDATE books.stock SET stoc = stoc -1 WHERE isbn = NEW.isbn;

Articole similare