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ランキング
-
エクセルで最後の文字だけ置き...
-
VIEWの元のテーブルのindexって...
-
insertを高速化させたい
-
副問合せの書き方について
-
SQL Left Join で重複を排除す...
-
ある条件の最大値+1を初番する...
-
selectした大量データをinsert...
-
マイクラPC版のコマンドで効率...
-
select文のwhere句に配列を入れ...
-
一つ前のレコードの値と減算し...
-
my_itemsテーブルのIDにAUTO_IN...
-
期間の重複を調べるSQL文につい...
-
1対多結合で多を絞り込み条件と...
-
SELECT~LIKE~の結果が変
-
1テーブル&複数レコードの更新...
-
MySQLにてCOUNTした値を更にCOUNT
-
エクセルの関数について教えて...
-
Unionした最後にGROUP BYを追加...
-
SQLサーバから、項目の属性(型...
-
バインド変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
VIEWの元のテーブルのindexって...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
副問合せの書き方について
-
マイクラPC版のコマンドで効率...
-
Unionした最後にGROUP BYを追加...
-
selectした大量データをinsert...
-
SQLにて特定の文字を除いた検索...
-
[SQLServer] テーブル名からカ...
-
1テーブル&複数レコードの更新...
-
inner joinをすると数がおかし...
-
クエリ表示と、ADOで抽出したレ...
-
ある条件の最大値+1を初番する...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
insertを高速化させたい
-
PL/SQLの変数について
-
キー毎の、ある列のmaxのレコー...
おすすめ情報