外部キー制約を使うと、あるデータを削除した時に関連する他のテーブルのデータを一緒に消すようなことが出来ます。
PostgreSQLとMySQLで、外部キー制約(他のテーブルの指定したカラムにある値以外を取らないようにする)の追加は同じクエリで出来るようです。
下記の例は、EIP_T_ACL_USER_ROLE_MAPテーブルのrole_idというカラムが、EIP_T_ACL_ROLEテーブルのROLE_IDにない値は取れないようにする制約です。下記の場合、EIP_T_ACL_ROLEのデータを削除するとEIP_T_ACL_USER_ROLE_MAPのrole_idの同じデータが削除されます。
PostgreSQL
- 表示
select * from information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY' AND table_name = 'eip_t_acl_user_role_map';
- 追加
ALTER TABLE EIP_T_ACL_USER_ROLE_MAP ADD FOREIGN KEY (ROLE_ID) REFERENCES EIP_T_ACL_ROLE (ROLE_ID) ON DELETE CASCADE;
- 削除
ALTER TABLE eip_t_acl_user_role_map DROP CONSTRAINT {制約名};
MySQL
- 表示
show create TABLE eip_t_acl_user_role_map
- 追加
ALTER TABLE EIP_T_ACL_USER_ROLE_MAP ADD FOREIGN KEY (ROLE_ID) REFERENCES EIP_T_ACL_ROLE (ROLE_ID) ON DELETE CASCADE;
- 削除
ALTER TABLE eip_t_acl_user_role_map DROP FOREIGN KEY {制約名}