Por favor alguien puede explicar lo que se entiende por:nuevo y viejo código de disparo
:new
y :old
en el código de activación.
Por favor alguien puede explicar lo que se entiende por:nuevo y viejo código de disparo
:new
y :old
en el código de activación.
:new
y :old
son pseudoregistros que le permiten acceder a los valores nuevos y antiguos de columnas particulares. Si tengo una tabla
CREATE TABLE foo (
foo_id NUMBER PRIMARY KEY,
bar VARCHAR2(10),
baz VARCHAR2(10)
);
y puedo insertar una fila
INSERT INTO foo(foo_id, bar, baz)
VALUES(1, 'Bar 1', 'Baz 1');
entonces en un nivel de fila antes de desencadenador de inserción
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 1'
mientras
:old.foo_id will be NULL
:old.bar will be NULL
:old.baz will be NULL
Si luego actualice esa fila
UPDATE foo
SET baz = 'Baz 2'
WHERE foo_id = 1
entonces en un disparador de actualización a nivel de fila antes de
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 2'
mientras
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 1'
Si a continuación, eliminar la fila
DELETE FROM foo
WHERE foo_id = 1
luego en una fila antes de eliminar disparador de nivel,
:new.foo_id will be NULL
:new.bar will be NULL
:new.baz will be NULL
mientras
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 2'
En un disparador del registro :old
contiene los valores antes de la ejecución de la sentencia activadora, el registro :new
contiene los valores después de la ejecución.
en la llanura Inglés:
Son alias que le permiten acceder a la información de la forma de una columna era (de edad) y cómo va a ser (nuevo).
valores antiguos y nuevos están disponibles tanto antes como después de la fila activa. Se puede asignar un nuevo valor de columna en un desencadenante de fila ANTES, pero no en un desencadenante de fila DESPUÉS (porque la instrucción desencadenante surte efecto antes de que se active un desencadenador de fila DESPUÉS). Si un desencadenante ANTES de la fila cambia el valor de new.column, un desencadenante de la fila AFTER disparado por la misma instrucción ve el cambio asignado por el desencadenante ANTES de la fila.
Los nombres de correlación también se pueden usar en la expresión booleana de una cláusula WHEN. Los dos puntos deben preceder a los calificadores antiguos y nuevos cuando se usan en el cuerpo de un desencadenante, pero no se permiten dos puntos al usar los calificadores en la cláusula WHEN o la opción REFERENCING.
el valor old
es el valor before the change
y el valor new
es la value to be changed
, así por ejemplo, en un update set col1=10
, 10 es el valor new
y el valor que es corriente en la columna es la edad en.
En un inserto, tampoco hay valor antiguo, nuevo y en una eliminación no es nuevo valor, sólo el viejo
¿Es esta tarea? – Sparky
danos un contexto – keyser
es una pregunta de revisión que estoy preparando, tienes que responder a la pregunta "¿qué significa: nuevo y: viejo en código de activación?" – user1300580