Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   OLD y NEW en UPDATE (https://www.clubdelphi.com/foros/showthread.php?t=26359)

micayael 20-10-2005 15:00:26

OLD y NEW en UPDATE
 
Hola Gente.

Tengo un trigger para ejecutarse antes de actualizar.

Ejemplo de tabla = PERSONA
id
nombre
apellido

Yo por ejemplo quiero actualizar solo el apellido
UPDATE PERSONA SET apellido = 'gonzalez'

en el NEW solamente esta el apellido? o tambien puedo acceder NEW.id?

maeyanes 20-10-2005 15:22:00

Hola...

Se pueden acceder a todos los campos de la tabla a la que pertenece el trigger con NEW y OLD.

Por ejemplo:
Código SQL [-]
create trigger NewPerson for table Persona
before insert
as
begin
  if (NEW.nombre is null) then
    NEW.nombre = 'JUAN';
  if (NEW.apellido is null) then
    NEW.apellido = 'PEREZ';
end


Saludos...

micayael 20-10-2005 15:32:43

Si pero ahi si es logico por ser un insert. pero para un update es la pregunta?

Es decir si yo actualizo solo el campo apellido NEW.nombre va a ser NULL?

maeyanes 20-10-2005 15:50:14

En el caso del update como lo comentas, NEW.nombre va a tener el valor actual del registro a modificar.

Por ejemplo el registro: id: 1, nombre: 'JUAN', apellido: 'PEREZ'

Le haces un update:
Código SQL [-]
update Personas set apellido = 'GOMEZ' where id = 1;
En un trigger before update puedes hacer algo como:
Código SQL [-]
create trigger UpdatePersonas for table Personas
before update
as
begin
  if (NEW.nombre <> OLD.nombre) then
    /* Aqui puedes hacer algo si se quiere cambiar el valor de nombre en el update */
  /* ... */
end

Espero que esto te aclare tus dudas.


Saludos...


La franja horaria es GMT +2. Ahora son las 17:41:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi