在我的应用程序中,应使用Web界面输入数据。如果我输入相同的节ID,则应显示错误消息。
我有SECTION_ID的MEETING表 当我尝试触发时,我收到了错误
Msg 4104, Level 16, State 1, Procedure fourone, Line 7
The multi-part identifier "inserted.SECTION_ID" could not be bound.
Create trigger fourone
On MEETING
for Insert
As
IF( exists (select * from MEETING WHERE MEETING.SECTION_ID = inserted.SECTION_ID ))
BEGIN
raiserror('ERRORRRRRRRR',15,1);
END
我错过了什么? 你能给我一些建议吗?
答案 0 :(得分:1)
您需要在JOIN中引用插入的表格,如下所示:
IF( exists (select * from MEETING
JOIN inserted ON MEETING.SECTION_ID = inserted.SECTION_ID ))
BEGIN
raiserror('ERRORRRRRRRR',15,1);
END
答案 1 :(得分:0)
if语句应该是这样的:
IF(EXISTS(
SELECT
NULL
FROM
MEETING
WHERE EXISTS
(
SELECT
NULL
FROM
inserted
WHERE
inserted.SECTION_ID=MEETING.SECTION_ID
)
)
BEGIN
raiserror('ERRORRRRRRRR',15,1);
END
在msdn上它说:
DML触发器使用已删除和插入的逻辑(概念)表。 它们在结构上类似于触发器所在的表 已定义,即尝试用户操作的表。该 删除和插入的表保存旧值或新值 可以由用户操作更改的行。例如,要检索 删除表中的所有值,使用
参见参考here