Jac*_*ack 1 t-sql sql-server sql-server-2008
所以,我正在尝试创建一个触发器,如果外键代码无效,将在插入数据时抛出错误.我有两个表,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
Run Code Online (Sandbox Code Playgroud)
INSERTED和DELETED也是表格
所以你必须这样做:
if not exists(
select * from Publisher
where PublisherCode in (SELECT PublisherCode FROM inserted)
)
Run Code Online (Sandbox Code Playgroud)
顺便说一下,正如hkf所说,如果你确定了PublisherCode AS外键,你将不需要进行触发