我正在计算sql脚本,在触发器执行后,如果表中已存在两个值。 例如。
表格显示:
╔══════════════════════════════╗
║ User_name Question_ID Answer ║
╠══════════════════════════════╣
║ Tom Q001 D ║
║ Sam Q002 F ║
╚══════════════════════════════╝
如果我希望用户只能在一个问题上提交一个答案 所以,如果我插入值('Tom','Q002''A') 它会成功插入。 但是如果我插入值('Tom','Q001''A') 它将执行触发器,因为同一个用户试图回答相同的问题。
我写道: Create Trigger insert_question1
on [dbo].[Questions]
After insert
As
if
Begin
Print 'You already answered'
Rollback
End
我无法在IF之后找到条件 请帮助我:C
答案 0 :(得分:1)
尝试这样的事情:
CREATE TRIGGER INSERT_QUESTION1
ON DBO.QUESTIONS
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO [dbo].[QUESTIONS]
SELECT I.[USER_NAME],
I.QUESTION_ID,
I.ANSWER
FROM INSERTED I
WHERE NOT EXISTS (SELECT *
FROM QUESTIONS Q
WHERE Q.QUESTION_ID = I.QUESTION_ID
AND Q.USER_NAME = I.USER_NAME)
END
GO
此触发器可防止将副本插入表格中
你真的需要Print 'You already answered'
吗?
如果是,只需将其添加到触发器的末尾:
IF @@ROWCOUNT = 0
PRINT 'You already answered'