触发器插入 - 防止插入重复 ID
Trigger insert - prevent inserting duplicate ID
我从前一个BI Analyst那里继承了一个数据库,大部分PK和FK都没有,数据量很大。我触发了
防止插入多个旧 ID 的表格之一。
我的问题是,即使 OLD_ID
不存在,它仍然会抛出 RAISERROR
消息。有人可以指导我吗?
此外,如何将此应用于 UPDATE
?
CREATE TRIGGER TRIG_DUP_OUTLET
ON Outlets
INSTEAD OF INSERT
AS
if NOT exists (
select DISTINCT A.OLD_ID
from Outlets A
left join inserted B
on A.OLD_ID = B.OLD_ID
)
begin
insert into RDOutlets
select _ID , OLD_ID ,BRANCH_NAME
,ADDRESS, PROVINCE ,CITY
CREATE_DATE
from inserted
end
else
begin
rollback
RAISERROR ('Duplicate OLD ID', 16, 1);
end
go
将 LEFT JOIN
更新为 INNER JOIN
,然后禁用并重新启用触发器。
我从前一个BI Analyst那里继承了一个数据库,大部分PK和FK都没有,数据量很大。我触发了 防止插入多个旧 ID 的表格之一。
我的问题是,即使 OLD_ID
不存在,它仍然会抛出 RAISERROR
消息。有人可以指导我吗?
此外,如何将此应用于 UPDATE
?
CREATE TRIGGER TRIG_DUP_OUTLET
ON Outlets
INSTEAD OF INSERT
AS
if NOT exists (
select DISTINCT A.OLD_ID
from Outlets A
left join inserted B
on A.OLD_ID = B.OLD_ID
)
begin
insert into RDOutlets
select _ID , OLD_ID ,BRANCH_NAME
,ADDRESS, PROVINCE ,CITY
CREATE_DATE
from inserted
end
else
begin
rollback
RAISERROR ('Duplicate OLD ID', 16, 1);
end
go
将 LEFT JOIN
更新为 INNER JOIN
,然后禁用并重新启用触发器。