外部キー制約を設定したい

実現したいこと

参照元「items」の全てのカラムから参照先「users」の全てのカラムに外部キー制約を設定したい。

経緯

PostgreSQL

1postgres=# SELECT*FROM items; 2id | name | price 3----+-----------+------- 4 1 | コーラ | 100 5 2 | USBメモリ | 2000 6 3 | 傘 | 500 7 4 | お茶 | 100 8 5 | 麦茶 | 100 9 6 | 烏龍茶 | 120 10 7 | コーヒー | 200 11 8 | メモ帳 | 600 12(8 行)

PostgreSQL

1postgres=# SELECT*FROM users; 2id | name | address | phone 3----+----------+--------------------+--------------- 4 1 | 山田太郎 | 東京都港区六本木 | 03-1234-5678 5 2 | 鈴木誠 | 神奈川県横浜市中区 | 090-9999-1111 6 3 | 山田葵 | 東京都杉並区今川 | 03-1111-1111 7(3 行)

という2つのテーブルを

ALTER TABLE items ADD CONSTRAINT items_users_fk FOREIGN KEY (id1, id2, id3, id4, id5, id6, id7, id8) REFERENCES users (id1, id2, id3);

というコマンドを入力することで、「items」から「users」に外部キー制約を設定しようとしたのですが

「外部キー制約で参照される列"id1"が存在しません」

というエラーが発生してしまいました。

質問

・なぜ上記のようなエラーが発生してしまっているのでしょうか?
・どうすれば参照元「items」の全てのカラムから参照先「users」の全てのカラムに外部キー制約を設定できるでしょうか?

試したこと

コマンド3行目のFOREIGN KEYの()内を
(id1, id2, id3, id4, id5, id6, id7, id8)
から
(id1, id2, id3)
に変えることにより、usersのカラム数と同等にした。

補足情報(ツールのバージョン)

PostgreSQL:15.2

コメントを投稿

0 コメント