如何在父級上設置空值時刪除子級行(刪除級聯?)?將父記錄設置爲空以便刪除子項:howto?
這是db設計。
表A [ID,b_id_1,b_id_2]
表B [ID,等領域...]
b_id_1和b_id_2可以是NULL
如果其中任何爲空,則裝置NO乙記錄對應FK(有它們中的2)
所以(b_id_1,b_id_2)可以是(NULL,NULL),(100,空),(NULL,100_or_any_other_number)等
如何在一個SQL查詢中將b_id_1(或b_id_2)設置爲null並刪除B中具有此ID的所有行?
什麼FK設計應該適用於2表?
查詢應該從表的角度來執行!
是的,如果我們使用「On delete set null」並從B表中刪除記錄,它將起作用。
但查詢必須只觸摸一個表!
然後你會發現,在mysql SQL語法中沒有像「從一行中刪除字段值」這樣的語句。
我們只能將它設置爲NULL。
這就是我需要的。
任何想法?
@codeholic我忘了添加一件重要的事情。查詢應該從表格的角度來執行!是的,如果我們使用這個On delete set null並從B表中刪除一條記錄,它將起作用。但查詢必須只觸摸一張桌子! – EugeneP 2010-04-18 08:05:11
@EugeneP:我已經更新了我的答案。 – codeholic 2010-04-18 12:39:19
謝謝,這不是一個簡單的問題,你的解決方案看起來很漂亮。 – EugeneP 2010-04-18 12:55:24