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

如何使用触发器防止学生回答同一问题两次。
2024-11-20 10:39:02
推荐回答(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
大概这样
自己修改就可以了
你自己基本上已经写出来了