我从以前的 BI Analyst 那里继承了一个数据库,其中大部分都缺乏 PK 和 FK,并且包含大量数据。我做了一个触发器 防止插入多个OLD 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
答案 0 :(得分:0)
将 LEFT JOIN
更新为 INNER JOIN
,然后禁用并重新启用触发器。