アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

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



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

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

お礼日時:2008/05/08 17:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!