
No.2ベストアンサー
- 回答日時:
「多くの場合、ユーザは、複数のテーブルの
一意の識別子を管理するために ROLLBACK や
LOCK TABLES を使用していた。これは、
AUTO_INCREMENT カラムおよび SQL 関数
LAST_INSERT_ID() または C API 関数
mysql_insert_id() を使用することで、
はるかに効率的に処理することができる。」
とありますので、一応は保証されていると考えて
よいのではないでしょうか。もちろん私が、保証
することはできませんので、自己責任で判断すべき
ことです。
3.23はトランザクション環境にないため、厳密に
整合性を保つためにはid管理は使用者側が任意に
行うべきだというのが個人的な感想です。
お役にたてませんで、申し訳ないです
参考URL:http://dev.mysql.com/doc/refman/4.1/ja/ansi-diff …
この回答への補足
大変助かります。
ありがとうございます。
最終的な手段としては、auto_incrementのIDを生成するためだけのテーブルを作成して、
テーブルA、テーブルBと共にPRIMARYをセットしておけば、
データの整合性が保たれるのではないかと考えていました。
引き続き、もう少し自分でも調べてみようと思います。
ご回答本当にありがとうございます。
No.1
- 回答日時:
もうすこし具体的にお願いします。
last_insert_id()は確かに最終発行された
auto_incrementの値を返す様ですが、セッション
が切れると参照ができないようです。
(所定の措置を入れれば別?)
試した感じ、そのセッションのinsertされたIDが
返されているようなので特に問題ないかとは
思いますが、実際にそれが信用できるかどうかは
微妙です。
select文を発行してidを得る方が間違いないかと
思いますがいかがでしょうか?
この回答への補足
回答ありがとうございます。
auto_incrementを使用しているテーブルには、他にユニークなデータを持つカラムがありません。order by 句はやろうとしている事から、使用不可能です。
やろうとしていることとしては、
テーブルAには
auto_incrementのIDとその他データ
テーブルBには
テーブルAに挿入されたデータと関連したその他データ
つまり、テーブルBのレコードは、テーブルAに挿入してできたauto_incrementのIDのあるレコードと関連した情報を持つ予定です。
この二つのテーブルを関連づけるものとして、auto_incrementで発行されたIDを使用したいと思っています。
(プログラムとしてはapacheモジュールのPHPを使用しています。)
そこで、
同時に始めのinsertが実行されてしまった場合、last_insert_idで
それぞれのinsertで発行されたIDを取得できるのかどうか疑問でした。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
sqlで、600行あるテーブルを100...
-
LEFT JOIN と GROUP BY
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
Excel2000でレーダーチャートの...
-
エクセルの関数について教えて...
-
inner joinをすると数がおかし...
-
SQLサーバから、項目の属性(型...
-
Updateの複数テーブル条件時のL...
-
MySQLのBLOBにバイナリで格納し...
-
[MySQL] 3つのテーブルの結合で...
-
selectで拾ってきたデータをも...
-
副問合せの書き方について
-
updateを1行ずつ実行したい。
-
SELECT句の指定フィールドに固...
-
MYSQLでSQLSERVERのリンクサー...
-
selectした大量データをinsert...
-
#1136 - Column count doesn't ...
-
SQLについての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
Unionした最後にGROUP BYを追加...
-
SQL Left Join で重複を排除す...
-
別のDB(Table)からの複数行の...
-
エラー 1068 (42000): 複数の主...
-
DB設計について
-
VIEWの元のテーブルのindexって...
-
同じサーバーで、異なるデータ...
-
SQLサーバから、項目の属性(型...
-
クエリ表示と、ADOで抽出したレ...
-
SQLにて特定の文字を除いた検索...
-
select文のwhere句に配列を入れ...
-
カラム名でseqとidではどちらが...
-
【SQL文】Insert into文で文法...
-
マイクラPC版のコマンドで効率...
-
Access パラメータクエリをcsv...
-
[MySQL] 1対多のリレーションで...
-
PL/SQLの変数について
-
MySQLにてCOUNTした値を更にCOUNT
おすすめ情報