PostgreSQLとMySQLの外部キー制約の表示・追加・削除の方法

otaguro 8,870views 更新:2014年12月22日

外部キー制約を使うと、あるデータを削除した時に関連する他のテーブルのデータを一緒に消すようなことが出来ます。
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 {制約名}

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません