【发布时间】:2012-04-30 19:10:39
【问题描述】:
我的查询如下所示:
INSERT INTO table1 (lfd, somedata)
select (select max(lfd) + 1 from table1), somedata from table2
Table2 有多行。所以我想将多行插入table1。 这可行,但 lfd 为所有插入的行设置为相同的数字。
因此,如果插入的第一行的 max(ldf) + 1 为“2”,那么接下来的所有行也为“2”。这是不正确的,因为下一行的 max(lfd) + 1 当然应该返回“3”。
我如何告诉 mysql 重新评估每个插入的子查询?
我无法触摸表结构,因为我将数据从一个 php-gallery 迁移到另一个不同的 php-gallery。表的结构由应用程序控制。
在 Oracle 中,我只需定义一个序列并在子选择中选择 squeencename.nextval。 - 我很确定这会起作用,但据我所知,mysql 不提供序列,对吧?
【问题讨论】:
-
和答案一样,同样的问题:我不能碰桌子结构。
-
您可能会以任何其他方式面临并发问题(除非您锁定表) - 是否有可能其他用户/连接也可能在您的查询时将新记录插入
table1表跑步吗?