mysql:12962
From: 忠犬 KEN <忠犬 KEN <ken_ken_1962@xxxxxxxxxx>>
Date: Sat, 29 Apr 2006 13:32:53 +0900
Subject: [mysql 12962] Re: チュートリアルの外部キーの使用について
chukenと申します。 >「標準MySQL」なる書籍を読みながら、自分のためのデータベースを作るべくMySQL チュー >トリアルを試していたんですが、3.6.6外部キーの使用のところでつまずいていま す。 >http://dev.mysql.com/doc/refman/4.1/ja/example-foreign-keys.html >のとおり、テーブルを作ったのですが、 >+++++++++++++++++++++++++++ >mysql> select * from person; >+----+--------------------+ >| id | name | >+----+--------------------+ >| 1 | Antonio Paz | >| 2 | Lillana Angelovska | >+----+--------------------+ >2 rows in set (0.00 sec) > >mysql> select * from shirt; >+----+---------+--------+-------+ >| id | style | color | owner | >+----+---------+--------+-------+ >| 1 | polo | blue | 1 | >| 2 | dress | white | 1 | >| 3 | t-shirt | blue | 2 | >| 4 | dress | orange | 2 | >| 5 | polo | red | 4 | >| 6 | dress | blue | 5 | >| 7 | t-shirt | white | 6 | >+----+---------+--------+-------+ >7 rows in set (0.00 sec) >++++++++++++++++++++++++++++++++++ >テーブルshirtのownerは、personのid 1,2しかないはずですが、チュートリアルの ように >なりません。 >LAST_INSERT_ID()では、personのidを返して欲しいのですが、shirtのレコードを挿 入し >たときのidが返ってきているようなのです。何か注意する点がありましたら教えて いただ >けないでしょうか。 結論から言うと、マニュアルの例題が間違っています。 バージョン5の英文マニュアルでは、例題が修正されています。 http://dev.mysql.com/doc/refman/5.0/en/example-foreign-keys.html person表にinsertした後、変数@lastにLAST_INSERT_ID()を退避し、 shirt表のinsert時に@lastを利用するように修正されています。 INSERT INTO person VALUES (NULL, 'Antonio Paz'); SELECT @last := LAST_INSERT_ID(); INSERT INTO shirt VALUES (NULL, 'polo', 'blue', @last), (NULL, 'dress', 'white', @last), (NULL, 't-shirt', 'blue', @last); INSERT INTO person VALUES (NULL, 'Lilliana Angelovska'); SELECT @last := LAST_INSERT_ID(); INSERT INTO shirt VALUES (NULL, 'dress', 'orange', @last), (NULL, 'polo', 'red', @last), (NULL, 'dress', 'blue', @last), (NULL, 't-shirt', 'white', @last);
12960 2006-04-29 10:41 [wada toshiki <wada-t] チュートリアルの外部キーの使用について -> 12962 2006-04-29 13:32 ┗[忠犬 KEN <ken_ken_19] 12963 2006-04-29 15:17 ┗[wada toshiki <wada-t] Re: [解決]チュートリアルの外部キーの使用について