使用触发器忽略插入

时间:2011-02-15 13:14:19

标签: sql-server

我有一个包含三个表User(userID,Firstname,LastName),Movies(MovieID,MovieName)和UserMovies(MovieID,userID)的数据库。我在User表中也有一个触发器,我希望在Insert之后运行,它确定提供的userID是否已经存在。如果表中存在提供的userID,我该如何忽略触发触发器的插入并开始操作Movies表(我的下一个INSERT命令)?我尝试过使用RETURN

如果存在(选择insert.userID FROM inserted)
返回

但这不适合我。谢谢。

2 个答案:

答案 0 :(得分:1)

如果要根据某些条件限制数据插入,则应在before trigger中执行此操作。在这里,检查user_id是否已经存在。如果是,则可以通过回滚事务来限制在表中插入该数据。

答案 1 :(得分:0)

在触发器功能中引发异常。

RAISERROR ('Error Text', 11, 1);

我不知道在触发器函数中“忽略”插入的另一种方法。由于该函数是由INSERT命令触发的,因此应该发生INSERT或发生错误。

另一种方法是编写一个存储过程,在尝试INSERT之前检查你的状况。