Modifica valore inserito con il trigger
-
21-12-2019 - |
Domanda
Ho appena iniziato ad imparare SQL poche settimane fa e sto cercando di fare un grilletto che cambia il valore inserito in 10 se è più piccolo di 10. Ho cercato per 4 ore e ho trovato moltorisposte ma nessuno era buono (per me).Non capisco davvero dove sia il problema. Ecco il codice:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON Book
FOR EACH ROW
BEGIN
IF new.nobook < 10
THEN
SET new.nobook = 10;
END IF;
END;
. Soluzione
In Trigger Sintassi di Oracle Il record appena inserito è indicato da :new
, non new
(nota il colon).Inoltre, SET
è parte di un'istruzione Aggiornamenti, non è un modo per impostare i valori del campo, quelli sono eseguiti da semplici assegnazioni, ma si noti che questi sono eseguiti con :=
anziché =
.
.
Quindi, il tuo trigger dovrebbe leggere:
CREATE OR REPLACE TRIGGER NumberOfBooks
BEFORE INSERT
ON book
FOR EACH ROW
BEGIN
IF :new.nobook < 10
THEN
:new.nobook := 10;
END IF;
END;
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow