MAX(col)+1 INSERT陷入同一MySQL表的麻烦

时间:2012-11-05 13:13:02

标签: mysql

我在同一个表中需要两个id列,在插入时创建唯一值。由于MySQL只允许一列自动递增,我需要为其他列执行类似max(id)+1的操作。

这是我期望工作的SQL:

INSERT INTO invoices (invoiceid)
VALUES ((SELECT MAX(invoiceid)+1 FROM invoices))

select语句独立工作,但在我的INSERT中,它是不允许的。我收到错误:您无法在FROM子句

中为更新指定目标表'发票'

1 个答案:

答案 0 :(得分:4)

您想使用INSERT INTO .... SELECT FROM代替INSERT INTO...VALUES()

INSERT INTO invoices (invoiceid)
SELECT MAX(invoiceid)+1 
FROM invoices

我的问题是你为什么不使用AUTO INCREMENT字段来生成invoiceid值?这就是它的用途,那么在插入数据时你就不必创建它。