
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で質問しましょう!
似たような質問が見つかりました
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP php エラー 2 2022/10/23 16:43
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
NOT INをNOT EXISTSで書き直したい
-
WordpressのContact form 7でzi...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
複数テーブルのGROUP BY の使い...
-
select文のwhere句に配列を入れ...
-
【Transact-sql】 execの結果を...
-
MySQL/PHP IN文
-
MySqlに登録したデータを更新す...
-
phpMyAdmin を使って以下のSQL...
-
HTTPのヘッダーを生成するには...
-
データの追加の仕方
-
Postgreのupdateコマンドでエラー
-
2回SELECTせずにすむ方法?
-
MySQLで連番をつけて抽出したい
-
複数条件検索
-
期間の重複を調べるSQL文につい...
-
カラム情報取得方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報