2010-10-13 86 views
0

所以我很困惑如何編寫這個過程。這是需要做的。通過循環通過Id的刪除記錄的存儲過程

我已經制定了3個表如下:

tblObject {的ObjectId,MasterId}

tblAnotherObject {的ObjectId}

tblFurtherObject {的ObjectId}

我需要一個進程,可以刪除'tblAnotherObject'和'tblFurtherObject'中的行包含一個'ObjectId',它在'tblObject'中沒有匹配的'ObjectId',與'MasterId'傳遞給proc。

今天我一直在牆上撞了我的頭幾個小時,我不知道如何寫這樣的東西......提前非常感謝你。

+0

這部分「與'MasterId'中傳遞給proc'的部分不完全清楚。你能詳細說明一下這個部分嗎? – InSane 2010-10-13 03:22:18

+0

請發佈您迄今爲止編寫的代碼。人們通常不喜歡只爲你寫代碼。 – 2010-10-13 03:22:36

+0

@InSane - 說tblObject包含一個具有MasterId = 4和ObjectId = 15的行。我想刪除其他兩個表中ObjectId = 15的所有行。但是,如果tblObject的MasterId = 5和ObjectId = 15,並且我傳入@MasterId = 4,並且沒有MasterId = 4和ObjectId = 15的記錄,這些行不需要刪除。 – Scott 2010-10-13 03:27:51

回答

2

我需要一個進程,可以在「tblAnotherObject」和「tblFurtherObject」刪除行包含一個「的ObjectId」不具有在與在'所傳遞的「配對tblObject」匹配「的ObjectId」 MasterId'到proc。

用途:

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)