0

任何想法如何创建一个后触发器,其中每个用户将数据放入一次。例如。如果有人输入了一次,那么它将被执行。但第二次我想说“错误信息”

我有一张用户表、日期和他们的回复。TABLE 名称是用户响应

这是我到目前为止的编码

CREATE TRIGGER [dbo].[prevent_multiple_entry] ON [dbo].[userresponse]
FOR INSERT
AS
IF EXISTS (SELECT Users FROM userresponse) 

BEGIN 
  PRINT 'Error message'
RAISERROR('Each user can only submit to the same question once ',16,1)
ROLLBACK
END
4

1 回答 1

0

试试这个:

CREATE TRIGGER [dbo].[prevent_multiple_entry] ON [dbo].[userresponse]
FOR INSERT
AS
BEGIN
  IF EXISTS(SELECT * FROM userresponse AS U, INSERTED AS I WHERE U.User = I.User) 
  BEGIN 
    RAISERROR('Each user can only submit to the same question once ',16,1)
    ROLLBACK TRANSACTION
  END
END

确保“嵌套触发器”和 recursive_triggers 设置是适当的,并考虑该表中所有现有数据不会被触发器检查的事实。

并且SET TRANSACTION ISOLATION LEVEL SNAPSHOT设置了一个漏洞,小心。

你也可以定义一个约束...

于 2013-10-17T15:29:37.327 回答