3

我現在有一個刪除問題。我們沒有權限在記錄上啓用級聯刪除。我有User表,其中userId是大約20個不同表中的引用。我希望能夠編寫一個動態查詢,它將遞歸查找引用userId的所有表並刪除它們(對於每個表,它必須找到它自己的外鍵並將它們刪除),所以基本上是遞歸函數/將表名作爲參數和主鍵標識並執行級聯刪除的過程。任何可以做到這一點的腳本?我可以在information_schema上運行查詢以檢索User表的一個級別的依賴關係,但我需要以某種方式遞歸查找鏈接表的所有依賴關係,以便能夠擦除記錄。從給定表格動態構建外鍵圖形查詢

+1

也許:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=97454 –

+0

不完全是這樣 - 它似乎刪除了一切。按照正確的順序,但一切儘管如此。我也可以真的使用這樣的腳本;我想我今晚要回家時要解決這個問題,如果有人在此之前還沒有拿出答案的話。我的方法是通過PK/Table識別記錄,通過FK遞歸依賴關係,然後從最後一條記錄向上刪除記錄。有趣的挑戰... – Peter

+1

我錯了。它確實有效。只需用您嘗試刪除的鍵替換「%1」即可。然而,它看起來很長。但是,如果它有效,爲什麼要修復它? – Peter

回答

1

正如「Nathan Skerl」所建議的,我使用這個鏈接http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=97454,它完成了這項工作。唯一的是,我修改了fnCascadingDelete函數以包含RecordID參數,以便您可以傳遞要刪除的記錄的id,然後搜索%1並用@RecordID替換它。它工作完美,對於非常深的嵌套有點慢,但我想它是預期的。