1

因此,我正在尝试创建一个触发器,如果​​外键代码无效,该触发器将在插入数据时引发错误。我有两个表,Publisher 和 Title。标题上有一个出版商代码,出版商也是如此。我的标题上有用于插入的触发器,我目前正在执行 if not exists 并选择代码等于插入行的发布者代码的发布者行。我不知道这是否是正确的方法,也可能不是,因为 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
4

1 回答 1

5

INSERTED 和 DELETED 也是表格

所以你必须这样做:

if not exists(
    select * from Publisher 
    where PublisherCode in (SELECT PublisherCode FROM inserted) 
)

顺便说一句,正如hkf所说,如果您将PublisherCode识别为外键,则无需触发

于 2012-04-20T06:29:46.597 回答