IF EXISTS (SELECT name FROM sysobjects WHERE name = 'myTrigger' AND type = 'TR')
BEGIN
DROP TRIGGER myTrigger
END
GO
go
create trigger myTrigger
on mytable_backup
instead of insert
as
begin
declare @seq int
select @seq = seq from inserted
if exists (select * from mytable_backup where seq= @seq) begin
delete from mytable_backup where [email protected]
end
insert into mytable_backup
select * from inserted
end
go
Я написал этот триггер, чтобы проверить, вставляя, если seq
колонка повторяется затем обновить предыдущую строку с таким же seq
если seq
не выходит вставить его новым seq
.проблема с триггером в ms sql server?
В пакете ssis я использую таблицу OLEDB (Mytable
) в качестве источника, который содержит.
Name,Age,Seq
Gauraw,30,1
Gauraw,31,1
Kiran,28,3
Kiran,29,3
kiran,28,3
Venkatesh,,4
Venkatesh,28,4
Теперь я загружаю эту таблицу для OLEDB назначения (Mytable_backup
) в качестве пункта назначения. Я предполагаю получить выход как.
Gauraw,31,1
kiran,28,3
Venkatesh,28,4
Но я получаю все записи из Mytable
в Mytable_backup
.
что-то не так с моим спусковым крючком?
Триггеры, как и большинство операций SQL, работают на множестве. Предполагается, что за один раз будет вставлена только одна строка. Это не сулит ничего хорошего. – HABO