2

挿入時に一意の値を作成する同じテーブルに 2 つの id 列が必要です。MySQL では 1 つの列のみが自動インクリメントできるため、他の列に対して 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 に答える