【问题标题】:SQL2012 microsoft triggerSQL 2012 微软触发器
【发布时间】:2013-10-17 23:29:37
【问题描述】:

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

表格 我有一张用户表、日期和他们的回复。 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

【问题讨论】:

  • 为什么不简单地使用唯一索引?

标签: sql-server tsql triggers


【解决方案1】:

试试这个:

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设置了漏洞,小心。

你也可以定义一个 CONSTRAINT...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
相关资源
最近更新 更多