• ベストアンサー

PHPMYAdmin リレーションについて

宜しくお願いします。 現在、mysql(PHPMYAdmin) を access から操作しているのですが、以下の事がわかりませんでした。 PHPMYAdmin のテーブル a と b に int型・AUTO_INCREMENT の a_auto  b_auto を作成しています。それを access クエリで統合し、フォームを作成しました。 フォームで入情報を入力していると、 a_auto と b_auto が異なる値で保存されてしまいます。 これを同じ値で保存したいのですが、どうすればいいでしょうか?

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

  • ベストアンサー
回答No.1

具体的なアドバイスを得たいなら、もっと具体的な情報を提示してください。 >それを access クエリで統合し、フォームを作成しました。フォームで入情報を入力していると、 >a_auto と b_auto が異なる値で保存されてしまいます。 表定義の各列に、どのように値を格納しているのか提示しなければ、誰もアドバイスできません。 そもそも、MySQLのauto_incrementを利用すべきでないのでは? MySQLのauto_incrementは、一意な数値のキー値を自動的に作ってくれる機能です。 大まかな特徴としては、次のようなものがあります。 (1)nullを格納で、自動生成 (2)定数を格納すると、その値が入る。その値がそれまでの最大値なら、それ以降の値が自動生成される (3)deleteしても、元に戻って自動生成はしてくれない (4)ロールバックしても、元に戻って自動生成はしてくれない (5)(2)~(4)などにより、連番になることは保証していない したがって、テーブル a と b に、どのようにinsertしているのか、といったことを提示しなければ、誰もアドバイスできません。 また、「二つのテーブルに同一値を格納する」という要件があるなら、それを利用者側で保証する仕組みを作る必要があります。 その仕組みを作るために、MySQLの外部キー制約を活用するとか、トリガで実装するとかといったことは考えられます。 (トリガは、MySQL 5.0での実装です。MySQLのバージョン提示も、MySQL 4.1、5.0といったレベルまで、最低限、提示するようにしてください)

akitakoma4
質問者

お礼

ありがとうございます。 ご指摘の 外部キー制約 を使用したら、「二つのテーブルに同一値を格納する」事が出来ました。 詳しく記載して頂いて、ありがとうございます。

akitakoma4
質問者

補足

ありがとうございます! すいません、説明が足りませんでした。。 >「二つのテーブルに同一値を格納する」 まさにこれがしたかったのです。 クエリで INNER JOIN を使ってくっつけていたのですが、うまくいきませんでした。 mysql は 5.0.8 を利用しています。