ここに私のテーブルがあります
test(tno,tname),
test2(t2no,tno,...);
test3(t3no,t2no,y,...);
これらの 3 つのテーブルに 1 つのトランザクションで 1 つずつデータを挿入して、test1 で生成された ID が test2 で参照されるようにしたいと考えています。しかし、私の問題は、複数のユーザーが一度に同じページにアクセスできることです。その時点で、あるフェローの ID が別のフェローのレコードで参照されています。私のデータベースにはautocommit = 1があります。このために、最初にこれらのテーブルをロックしてロックします。次に、ユーザーが以前の詳細が保存されるまで待機するように、上記のことを試みました。ただし、データを受け入れてキューに保持します。
動作していますが、これらのテーブルで auto_increment を有効にしていません (DB を変更する権限がないため、変更できません)。
私はこのようにしてみました
lock table test write,test2 write,test3 write;
mysql> insert into test(tno) select max(tno) from test;
ERROR 1100 (HY000): Table 'test' was not locked with LOCK TABLES.
そのIDの値を静的に指定すると、正常に機能します。他のすべては正常に機能しています。