[前][次][番号順一覧][スレッド一覧]

mysql:15873

From: 雪竹 勝義 <雪竹 勝義 <yukitake@xxxxxxxxxx>>
Date: Wed, 10 Oct 2012 17:15:31 +0900
Subject: [mysql 15873] mysql5でのINSERT INTO hoge SELECT FROM tempでSELECT側のデータが取得できない。

スタッフ、皆様
お世話になります。

Yukitakeといいます。

mysql5での
INSERT INTO hoge SELECT FROM tempで
tempのデータをロックしている場合にtempのデータが取得できません。

具体的には以下に記述します。

1.以下のようなマスタファイルがあります。
	テーブル名 M_得意先
	項目 コード、名
	データ
	1.田中商事
	2,北村商事

この得意先マスタの内容をWORKテーブルへ以下のコマンドへそっくり移したいと思います。

	①INSERT INTO WORK( コード、名 )SELECT コード、名 FROM 得意先マスタ WHERE コード = 1

この時得意先マスタを編集するために以下のコマンドを発行していると上記コマンド①で得意先マスタを取得で
きずにタイムアウトします。

	②SELECT * FROM 得意先 WHERE コード = 1 FOR UPDATE


もちろんコマンド②を発行していない場合はコマンド①は成功します。
また以下のようにコマンド①を分けて発行すると大丈夫です

	③SELECT コード、名 FROM 得意先マスタ WHERE コード = 1
	④INSERT INTO VALUES コマンド③の結果

	↑これだとコマンド②を実行していても大丈夫

以上のようにmysqlでは他で行ロックしている内容はINSERT INTO SELECT FROMできないのでしょうか?
検索をするとmysqlのINSERT INTO SELECT FROMはいろいろ制約があるようですが対応策があればと思います。

コマンド③④のように取得と書き込みを分けると可能なのですが件数が多いので実行時間がかかりすぎて(ルー
プで得意先マスタの件数分回す場合がある)使えません。
本当はコマンド①で一括で持ってきたいです。


何かアドバイスがあればよろしくお願いします。

以上 





[前][次][番号順一覧][スレッド一覧]

->   15873 2012-10-10 17:15 [雪竹 勝義 <yukitake] mysql5でのINSERT INTO hoge SELECT FROM tempでSELECT側のデータが取得できない。
     15874 2012-10-10 17:33 ┗["yoku ts." <yoku0825]                                       
     15875 2012-10-10 17:55  ┣[tsyk goto <ngyuki.ts]                                     
     15877 2012-10-10 18:25  ┃┣["yoku ts." <yoku0825]                                   
     15879 2012-10-10 18:45  ┃┃┗[雪竹 勝義 <yukitake]                                 
     15880 2012-10-10 21:21  ┃┃ ┣["yoku ts." <yoku0825]                               
     15882 2012-10-11 13:31  ┃┃ ┗[中川 貴 <takashi.nak]                               
     15878 2012-10-10 18:39  ┃┗[雪竹 勝義 <yukitake]                                   
     15876 2012-10-10 18:09  ┗[雪竹 勝義 <yukitake]