所以我真的很困惑如何写这个proc。这是需要做的事情。
我有3张表格如下:
tblObject {ObjectId,MasterId}
tblAnotherObject {ObjectId}
tblFurtherObject {ObjectId}
我需要一个可以删除'tblAnotherObject'和'tblFurtherObject'中包含'ObjectId'的行的proc,'ObjectId'在'tblObject'中没有匹配的'ObjectId',它与传入的'MasterId'配对过程。
今天我一直在墙上撞墙几个小时,我不知道如何写这样的东西......非常感谢你提前。
答案 0 :(得分:2)
我需要一个可以删除'tblAnotherObject'和'tblFurtherObject'中包含'ObjectId'的行的proc,'ObjectId'在'tblObject'中没有匹配的'ObjectId',它与传入的'MasterId'配对过程。
使用:
DELETE FROM TBLANOTHEROBJECT
WHERE NOT EXISTS(SELECT NULL
FROM TBLOBJECT o
WHERE o.masterid = @masterid
AND o.objectid = TBLANOTHEROBJECT.objectid)
DELETE FROM TBLFURTHEROBJECT
WHERE NOT EXISTS(SELECT NULL
FROM TBLOBJECT o
WHERE o.masterid = @masterid
AND o.objectid = TBLFURTHEROBJECT.objectid)
假设tblObject包含一个MasterId = 4且ObjectId = 15的行。我想删除其他两个表中ObjectId = 15的所有行。
相反 - 使用:
DELETE FROM TBLANOTHEROBJECT
WHERE EXISTS(SELECT NULL
FROM TBLOBJECT o
WHERE o.masterid = @masterid
AND o.objectid = TBLANOTHEROBJECT.objectid)
DELETE FROM TBLFURTHEROBJECT
WHERE EXISTS(SELECT NULL
FROM TBLOBJECT o
WHERE o.masterid = @masterid
AND o.objectid = TBLFURTHEROBJECT.objectid)