qualcuno può spiegare cosa si intende per:codice di attivazione vecchi e nuovi
:new
e :old
nel codice di attivazione.
qualcuno può spiegare cosa si intende per:codice di attivazione vecchi e nuovi
:new
e :old
nel codice di attivazione.
:new
e :old
sono pseudo-record che consentono di accedere ai nuovi e vecchi valori di particolari colonne. Se ho una tabella
CREATE TABLE foo (
foo_id NUMBER PRIMARY KEY,
bar VARCHAR2(10),
baz VARCHAR2(10)
);
e inserisco una fila
INSERT INTO foo(foo_id, bar, baz)
VALUES(1, 'Bar 1', 'Baz 1');
poi in un livello di riga prima di trigger di inserimento
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 1'
mentre
:old.foo_id will be NULL
:old.bar will be NULL
:old.baz will be NULL
Se quindi aggiorna quella riga
UPDATE foo
SET baz = 'Baz 2'
WHERE foo_id = 1
poi in un prima trigger di aggiornamento a livello di riga
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 2'
mentre
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 1'
Se poi eliminare la riga
DELETE FROM foo
WHERE foo_id = 1
poi in fila prima di eliminare -level trigger,
:new.foo_id will be NULL
:new.bar will be NULL
:new.baz will be NULL
mentre
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 2'
in un trigger record :old
contiene i valori prima dell'esecuzione dell'istruzione scatenante, il record :new
contiene i valori dopo l'esecuzione.
In Plain English:
Sono alias che consentono di accedere alle informazioni da come una colonna era (vecchio) e come sarà (nuovo).
Vecchi e nuovi valori sono disponibili sia prima che dopo fila trigger. È possibile assegnare un nuovo valore di colonna in un trigger di riga BEFORE, ma non in un trigger di riga AFTER (poiché l'istruzione di attivazione ha effetto prima che venga attivato un trigger di riga AFTER). Se un trigger di riga BEFORE modifica il valore di new.column, un trigger di riga AFTER attivato dalla stessa istruzione vede la modifica assegnata dal trigger di riga BEFORE.
I nomi di correlazione possono essere utilizzati anche nell'espressione booleana di una clausola WHEN. I due punti devono precedere i vecchi e nuovi qualificatori quando vengono utilizzati nel corpo di un trigger, ma i due punti non sono consentiti quando si utilizzano i qualificatori nella clausola WHEN o l'opzione REFERENCING.
il valore old
è il valore before the change
e il valore new
rappresenta l'value to be changed
, così per esempio, su un update set col1=10
, 10 è il valore new
ed il valore che è corrente nella colonna è il vecchio su.
su un inserto, c'è neanche vecchio valore, solo nuovo e su una eliminazione non c'è nuovo valore, solo vecchio
È questo il compito? – Sparky
darci un contesto – keyser
è una domanda di revisione che sto preparando, devi rispondere alla domanda "cosa si intende per: nuovo e: vecchio nel codice di attivazione?" – user1300580