みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

挿入ができない

MySQLバージョン4.1.16を使用しています。
「user_role」テーブルを
「users」テーブルのuser_idカラムと「roles」テーブルのrole_seqカラムを外部キーとして作成します。
そして「user_role」テーブルにuser_id「aaaa」とrole_seq「1」をINSERTしようとしたのですが、
以下のようなエラーが出てしまいます。

Cannot add or update a child row: a foreign key constraint fails (`test/user_role`, CONSTRAINT `user_role_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE)
INSERT INTO user_role (user_id, role_seq) VALUES ('aaaa', 1)

どこらへんが間違っているのでしょうか?
以下の手順でテーブルを作成しました。

CREATE TABLE users (user_id VARCHAR(16) NOT NULL, password VARCHAR(32) NOT NULL, regist_date DATETIME NOT NULL, PRIMARY KEY (user_id)) ENGINE = InnoDB
CREATE TABLE roles (role_seq BIGINT UNSIGNED AUTO_INCREMENT, name VARCHAR(32) NOT NULL, PRIMARY KEY (role_seq)) ENGINE = InnoDB
CREATE TABLE user_role (role_seq BIGINT UNSIGNED, user_id VARCHAR(16) NOT NULL, FOREIGN KEY (role_seq) REFERENCES roles(role_seq) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE) ENGINE = InnoDB

投稿日時 - 2008-05-08 15:33:19

QNo.4006766

すぐに回答ほしいです

質問者が選んだベストアンサー

親の行は、users表、roles表に格納済ですか?

INSERT INTO user_role (user_id, role_seq) VALUES ('aaaa', 1)
を実行するには、
users表にuser_id='aaaa'の行、roles表にrole_seq=1の行が格納済であることが前提になります。

投稿日時 - 2008-05-08 16:11:26

お礼

ご返答ありがとうございます。
なるほど、そういえばまだそれらには挿入していませんでした・・・
試したところ無事出来ました。ありがとうございます。

投稿日時 - 2008-05-08 17:37:37

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問