触发错误,错误来自if条件
问题描述:
在我的应用程序中,应该使用Web界面输入数据。如果我输入相同的部分ID,则应显示错误消息。触发错误,错误来自if条件
我有一个会议桌,表中没有任何值。 这是我的触发
Alter trigger fourone
On MEETING
INSTEAD OF Insert
As
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
有一个在触发任何错误。 但是,如果我输入任何值,那么它总是显示错误消息。 你们可以给我答案吗? 谢谢
答
它应该不是,而是在插入触发后。而不是告诉sql server你要自己插入数据。
你的条件也过于复杂:
IF EXISTS(SELECT NULL
FROM meetings inner join inserted
on inserted.SECTION_ID=MEETING.SECTION_ID
and inserted.id <> meeting.id
)
编辑:校正。在触发器被调用的时候,你已经插入了行。您需要测试是否存在插入的行中的section_id。查看修改后的代码并用会议表的主键替换ID。您应该在raiserror之后添加回滚,否则新行将保留在会议中。
谢谢你的回答。它仍然有相同的错误。我改变它是这样的IF(EXISTS(SELECT * FROM MEETING2 AS M内部连接插入I I上I.SECTION_ID = M.SECTION_ID)) BEGIN PRINT('ERRRRRRR') END – 2012-03-14 10:30:15
我已更正我的回应。 – 2012-03-14 10:55:04
- 谢谢。我修正了错误:)) – 2012-03-14 11:16:16