这是我的桌子
test(tno,tname),
test2(t2no,tno,...);
test3(t3no,t2no,y,...);
我想在一个事务中将数据一一插入到这三个表中,以便在 test1 中生成的 id 将在 test2 中引用,依此类推。但我的问题是多个用户可能一次访问同一个页面。当时一个人的身份正在另一个人的记录中引用。我的数据库有自动提交=1。为此,我首先通过锁定这些表来锁定。然后我尝试执行上述操作,以便用户等到其以前的详细信息被存储。尽管它接受数据并将其保留在队列中。
它正在工作,但我没有在这些表中的任何一个中启用 auto_increment(我无法修改它们,因为我没有更改数据库的权限)。
我试过这样
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 的值,它工作正常。其他一切工作正常。