求SQL高手指教。前提如下,学生需要提交学生名字,问题序号,问题答案去完成测试。

如何使用触发器防止学生回答同一问题两次。
2024年11月20日 10:39
有4个网友回答
网友(1):

学生是如何提交的呢?
是程序来 INSERT INTO ?

还是 学生自己, 手动来 INSERT INTO ?

如果是程序来 INSERT INTO。
那么可以先 SELECT
如果存在, 那么 UPDATE
如果不存在, 那么 INSERT INTO

如果是 学生自己, 手动来 INSERT INTO
那么 触发器里面,判断,如果有重复数据, 就 rollback。
回滚掉本行数据的处理。

网友(2):

你check一下不是就可以了吗?答过得题目都有内容,就不让他再次提交了

网友(3):

触发器接触的少。 我去百度学习下的。 在来看下的

网友(4):

CREATE TRIGGER Reader_Insert ON dbo.submit_Answer
FOR INSERT
AS
BEGIN TRANSACTION
DECLARE @fquestion char(10)
IF EXISTS (SELECT 1 FROM submit_Answer,inserted WHERE submit_Answer.UserName = inserted.UserName AND submit_Answer.Question_ID = inserted.Question_ID)
set @fquestion=(select cast(Question_ID as char(10)) from inserted)
print rtrim(@fquestion)+'问题提交了多次,请核实!'
ROLLBACK TRANSACTION
大概这样
自己修改就可以了
你自己基本上已经写出来了