所以,我正在尝试创建一个触发器,如果外键代码无效,将在插入数据时抛出错误。我有两个表,Publisher和Title。标题上有发布者代码,Publisher也是如此。我在我的Title for insert上有触发器,我当前正在执行if if not exists并选择Publisher行,其中代码等于插入行的发布者代码。我不知道这是否是正确的方法,而且可能不是,因为SQL给了我一个“多部分标识符Inserted.PublisherCode找不到”错误。你们可以给予的任何帮助将不胜感激。感谢。
go
create trigger TR_Title_PublisherCode_Insert
on title
for Insert
as
if not exists(select * from Publisher where PublisherCode = Inserted.PublisherCode)
begin
raiserror('Publisher does not exist', 16, 1)
rollback tran
end
答案 0 :(得分:5)
INSERTED和DELETED也是表格
所以你必须这样做:
if not exists(
select * from Publisher
where PublisherCode in (SELECT PublisherCode FROM inserted)
)
顺便说一句,正如hkf所说,如果你确定了PublisherCode AS外键,你将不需要触发