daybreaksnow's diary

私を私と呼びたい

[SQL Server]SQL Serverの連鎖更新

SQL Server 2008

外部キー制約がついているカラムを変更したい場合は、cascadeを有効にすると、関連先のカラムも同時に変更できる。

ALTER TABLE bid
    ADD CONSTRAINT bid_user_fk FOREIGN KEY(user_code) REFERENCES user (user_code) ON UPDATE CASCADE ON DELETE NO ACTION

上記の場合、userのuser_codeを変更すると、bidのuser_codeも同時に変更される。
外部キーが複数カラムの場合であっても、問題なく更新してくれる。


この設定はSQL Server Managerment Studioからでも変更できる。

・テーブル→キー→右クリックメニューの変更→INSERTおよびUPDATEの指定→更新ルール

デフォルトでは「アクションなし」になっている。
CASCADEは「重ねて表示」という訳になっていて分かりづらい。