我有兩個表:如何配置要在父表更新上刪除的引用?
info: ID, fee_id
和
fee: ID, amount
和它們之間的引用(SQL Server 2008
):
ALTER TABLE info WITH CHECK ADD CONSTRAINT FK_info_fee FOREIGN KEY(fee_id)
REFERENCES fee (ID)
ALTER TABLE info CHECK CONSTRAINT FK_info_fee
GO
如何配置此引用,方式,以便在fee
紀錄將被刪除,如果info.fee_id
變成NULL
編輯:或者可能設置info.fee_id
到NULL
刪除fee
中的相應記錄。
反正我能做到這樣:
UPDATE info SET fee = NULL WHERE = ..
DELETE FROM fee WHERE ..
,但我敢肯定,這可以通過數據庫本身來完成。
謝謝!似乎很有用!一個問題:據我所知,在這個配置中,我必須刪除'fee','info'中的相應列將被自動清空。對? – abatishchev 2010-04-05 11:16:39
是的,這是「ON DELETE SET NULL」。在父母刪除時,通過FK設置的子行爲空 – gbn 2010-04-05 11:22:00
哦,不,這不是我需要的。父記錄必須始終存在。孩子可以被刪除,並且'info.fee_id'必須爲空(以這2個操作的任何順序)。是否可以使用'REFERENCE'?或者只使用'TRIGGER'? – abatishchev 2010-04-05 11:31:08