触发错误,错误来自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之后添加回滚,否则新行将保留在会议中。

+0

谢谢你的回答。它仍然有相同的错误。我改变它是这样的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

+0

我已更正我的回应。 – 2012-03-14 10:55:04

+0

- 谢谢。我修正了错误:)) – 2012-03-14 11:16:16

也许你不应该使用触发器来处理可由UNIQUE constraint处理的作业。定义这样的约束,然后在插入尝试后,捕获违反唯一约束的异常并相应地通知用户。