2

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

这是我希望工作的 SQL:

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

select 语句独立工作,但在我的 INSERT 中,它是不允许的。我收到错误:您无法在 FROM 子句中指定目标表“发票”进行更新

4

1 回答 1

4

您想使用INSERT INTO .... SELECT FROM而不是INSERT INTO...VALUES()

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

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

于 2012-11-05T13:14:49.390 回答