在我的SQL Server 2008数据库中,我有三个表:
测试(TestId int,TestName varchar(50),UserId int,UserType int,isDelete bit)
问题(Tid int,Qid int,Qtype int,Question varchar(100),isDelete bit)
答案(questionid int,qtype int,description varchar(200),isDelete bit)
TestId
在问题表中可用,而不在答案表中。
每当我删除记录时,isDelete字段都会更新为true。
现在我想删除一个测试,即该测试中的所有问题,并且必须删除这些问题的所有答案,但我无法让SP删除测试 我是编程新手。
答案 0 :(得分:1)
您正在做"软删除"所以忽略关于触发器和级联以及操作顺序的所有混淆。使用联接找出哪些属于您要删除的测试。
答案 1 :(得分:0)
试试这个:
Delete Answers from Answers
inner join Questions on
Questions.Qid = Answers.questionid
inner join Test on
Test.TestId = Questions.Tid
where Test.TestId = @Id
and Test.isDelete = 1
Delete Questions from Questions
inner join Test on
Test.TestId = Questions.Tid
where Test.TestId = @Id
and Test.isDelete = 1
Delete Test where TestId = @Id
and isDelete = 1
通过联接,您可以使用Test
将questions
与TestId
连接,然后使用Questions
将Answer
与Qid
连接,它将全部删除这些表中与de条件匹配的记录。