- ベストアンサー
複数のテーブルのレコードをDELETEする方法
- 複数のテーブルからレコードを削除する方法について説明します。
- MySQLではテーブルの結合を利用してDELETE文で複数のテーブルのレコードを削除できますが、PostgreSQLではどうでしょうか?
- また、テーブル作成時に制約を設定する方法についても解説します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
すでに回答が付いていますが、 PostgreSQLでは、テーブルを結合して削除することは出来なかったと思います。 対策としては、下記の方法が考えられるかと。 1. 削除時には、先に user_rel_group テーブルの該当レコードを消してから member テーブルのレコードを消す様にする。 例) --------------------------------------------------- DELETE user_rel_group WHERE userid = 10030118; DELETE member WHERE userid = 10030118; ------------------------------------------------------- 2. ALTER TABLE 文で参照整合性制約を付け直す。 ------------------------------------------------------- ALTER TABLE user_rel_group DROP CONSTRAINT user_rel_group_userid_fkey; ALTER TABLE user_rel_group ADD CONSTRAINT user_rel_group_userid_fkey FOREIGN KEY (userid) REFERENCES user (userid) ON DELETE CASCADE; -------------------------------------------------------
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
> のようにテーブルを結合して、複数のテーブルのレコードを削除できるようですが、 > PostgreSQLは、出来ますでしょうか? 確かできなかったと思います。 http://www.postgresql.jp/document/current/html/sql-delete.html
お礼
返信送れて、申し訳ありません。 やっぱり出来ないみたいですか。
お礼
回答有難うございます。 「ALTER TABLE 文で参照整合性制約を付け直す。」の例、参考になりました。 テーブルのつくり直ししてしまいました。。