在插入的表T-SQL上引用列

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)

Mic*_*uen 5

INSERTED和DELETED也是表格

所以你必须这样做:

if not exists(
    select * from Publisher 
    where PublisherCode in (SELECT PublisherCode FROM inserted) 
)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,正如hkf所说,如果你确定了PublisherCode AS外键,你将不需要进行触发