Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
Post 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?
Responder Con Cita
  #2  
Antiguo 20-10-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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...
Responder Con Cita
  #3  
Antiguo 20-10-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 20-10-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
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...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:54:04.


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
Copyright 1996-2007 Club Delphi