Pregunta sobre un trigger

28/09/2005 - 20:46 por Mauricio | Informe spam
Hola a todos,
he armado un trigger en Oracle que hace lo siguiente: si inserto un
registro en una tabla, en otra tabla me inserta otro registro. Si en
cambio modifico un registro en la otra tabla primero lo busca y, si no
lo encuentra, lo agrega, si lo encuentra, lo modifica.
En Oracle tengo :new.Tabla.Campo para saber el valor del campo recién
insertado. También tengo IF INSERTING THEN (por ejemplo) para saber si
estoy insertando.
He intentado buscar en los libros de SQL pero no he encontrado un
ejemplo de cómo hacer lo mismo en MS-SQL. Alguien me podría indicar
dónde encontrar un ejemplo?
Desde ya, muchas gracias.

Mauricio Nicastro
Barcelona, España
 

Leer las respuestas

#1 Alejandro Mesa
28/09/2005 - 21:01 | Informe spam
Mauricio,

En sql server tenemos las tablas virtuales "inserted" y "deleted" las cuales
contienen lo siguiente:

- insert

inserted --> filas insertadas

- delete


- update

deleted --> valores de las filas modificadas antes de la modificacion
inserted --> valores de las filas modificadas despues de la modificacion


Ejemplo:

create table t1 (
c1 int
)
go

create table t2 (
t1 int
)
go

create trigger tr_t1_ins on t1
as
insert into t2(c1)
select c1
from inserted
go

insert into t1 values(1)
go

select * from t1
select * from t2
go

drop table t1, t2
go


AMB

"Mauricio" wrote:

Hola a todos,
he armado un trigger en Oracle que hace lo siguiente: si inserto un
registro en una tabla, en otra tabla me inserta otro registro. Si en
cambio modifico un registro en la otra tabla primero lo busca y, si no
lo encuentra, lo agrega, si lo encuentra, lo modifica.
En Oracle tengo :new.Tabla.Campo para saber el valor del campo recién
insertado. También tengo IF INSERTING THEN (por ejemplo) para saber si
estoy insertando.
He intentado buscar en los libros de SQL pero no he encontrado un
ejemplo de cómo hacer lo mismo en MS-SQL. Alguien me podría indicar
dónde encontrar un ejemplo?
Desde ya, muchas gracias.

Mauricio Nicastro
Barcelona, España

Preguntas similares