Ayuda con trigger de integridad

22/03/2005 - 19:27 por Jose | Informe spam
Tengo una tabla items(item,tipo,etc.), tengo otra tabla movs
(item,fecha,cantidad,etc.) . Quiero hacer un trigger (si no hay otra forma
claro) para que los registros que se inserten a la tabla movs sean
necesariamente de tipo 1 o 2. (movs.item es una clave foranea que apunta a
items.item.) y si se trata de crear un item que sea digamos del tipo 3 que
no me lo acepte.


Gracias por la ayuda, queridos amigos.
 

Leer las respuestas

#1 Alejandro Mesa
22/03/2005 - 19:43 | Informe spam
Trata:

create trigger tr_movs_ins on movs
for insert
as
if exists(select * from inserted as a inner join items as b on a.item =
b.item and (b.tipo != 1 and b.tipo != 2))
begin
rollback transaction
raiserror('No se puede crear movimientos para items cuyo tipo no es 1 o
2.', 16, 1)
return
end
go


create trigger tr_movs_io_ins on movs
instead of insert
as
if exists(select * from inserted as a inner join items as b on a.item =
b.item and (b.tipo != 1 and b.tipo != 2))
begin
rollback transaction
raiserror('No se puede crear movimientos para items cuyo tipo no es 1 o
2.', 16, 1)
return
end

insert into movs (item, fecha, cantidad, ...)
select item, fecha, cantidad, ...
from inserted

if @@error != 0
begin
rollback transaction
raiserror('Error insertando en la tabla [movs] desde el trigger
[tr_movs_io_ins ].', 16, 1)
return
end
go


AMB

"Jose" wrote:

Tengo una tabla items(item,tipo,etc.), tengo otra tabla movs
(item,fecha,cantidad,etc.) . Quiero hacer un trigger (si no hay otra forma
claro) para que los registros que se inserten a la tabla movs sean
necesariamente de tipo 1 o 2. (movs.item es una clave foranea que apunta a
items.item.) y si se trata de crear un item que sea digamos del tipo 3 que
no me lo acepte.


Gracias por la ayuda, queridos amigos.








Preguntas similares