QA@IT
«質問へ戻る

質問を投稿

php dbにデータを挿入する際のLOCK TABLES について

お世話になります。
当方の環境は、PHP5.2.13、mysql5.0.41です。

現在、csvをアップロードするphpを作成しています。

csvには作業データ+作業明細データが1レコードとして入っています。
tbl_work(作業テーブル)に作業データを格納し、
tbl_workdetail(作業明細テーブル)にデータを格納します。

foreach($work as $no=>$value){
 //★★

 if($tmp_empno!=$empno){
  //クエリを実行
  $rs=exeQuery("select max(work_no) as maxwork_no from tbl_work");
 }

 //tbl_work用のinsert文を作成

 //tbl_workdetail用のinsert文を作成


 //tbl_workの更新処理

 //tbl_workdetailの更新処理

 //トランザクションをコミット、テーブルをアンロック

}

csvをアップロード中に他のユーザからtbl_work、tbl_workdetailのデータを変更させなくしたいのですが、
//★★の部分で
LOCK TABLES tbl_work WRITE, tbl_workdetail WRITE
を行うのが正しいのでしょうか?
foreachの中で、LOCK TABLES を行うと負荷がかかりますか?
御教示くださいますと幸いです。

お世話になります。
当方の環境は、PHP5.2.13、mysql5.0.41です。

現在、csvをアップロードするphpを作成しています。

csvには作業データ+作業明細データが1レコードとして入っています。
tbl_work(作業テーブル)に作業データを格納し、
tbl_workdetail(作業明細テーブル)にデータを格納します。

```
foreach($work as $no=>$value){
 //★★
 
 if($tmp_empno!=$empno){
  //クエリを実行
  $rs=exeQuery("select max(work_no) as maxwork_no from tbl_work");
 }
 
 //tbl_work用のinsert文を作成
 
 //tbl_workdetail用のinsert文を作成
 
 
 //tbl_workの更新処理
 
 //tbl_workdetailの更新処理
 
 //トランザクションをコミット、テーブルをアンロック
 
}
```

csvをアップロード中に他のユーザからtbl_work、tbl_workdetailのデータを変更させなくしたいのですが、
//★★の部分で
LOCK TABLES tbl_work WRITE, tbl_workdetail WRITE
を行うのが正しいのでしょうか?
foreachの中で、LOCK TABLES を行うと負荷がかかりますか?
御教示くださいますと幸いです。