任何想法如何创建一个后触发器,其中每个用户每次放入一次数据。例如。如果有人输入一次,那么它将被执行。但第二次我想说'错误信息'
表格我有一个用户表,日期和响应。表名是userresponse
到目前为止,这是我的编码
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
答案 0 :(得分: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设置是合适的,并考虑一下触发器不会检查该表中所有现有数据的事实。
设置交易隔离级别SNAPSHOT设置了一个漏洞,请小心。
您还可以定义CONSTRAINT ...