-3

という名前のテーブルがありますBooks。その列はindexNumBooknameBookeditionで、indexNumは主キーで、自動インクリメントされます。

テーブルにデータを挿入しようとしましたが、挿入コマンドが拒否されました。次のステートメントを試しました。

INSERT INTO Books VALUES ('', Birds, a12)
INSERT INTO Books VALUES (NULL, Birds, a12)
INSERT INTO Books VALUES (Bookname, Bookedition)( Birds, a12)

最初の 2 つのステートメントは機能しません。最後のステートメントは最初は機能しましたが、次回は PK が重複していると表示されます。

多くの行を正しく挿入するにはどうすればよいですか?

4

2 に答える 2

1

あなたの構文は少しずれています。列リストを使用することをお勧めします。正しい構文については、ドキュメントを参照してください。文字列が一重引用符で囲まれていることを確認してください。

INSERT INTO Books (Bookname, Bookedition) VALUES ('Birds', 'a12')
于 2013-01-15T19:10:48.540 に答える
0
INSERT INTO Books (BookName, BookEdition) 
VALUES ('Birds' , 'a12')

- 編集

ID 列が欠落しているようですね。テーブルを変更できる場合は、それを検討してください。

MAXそうでない場合は、 and IFNULL(MySQL の場合) またはISNULL(SQL Server の場合)を使用する次のようなものを試してください。

INSERT INTO Books (IndexNum, BookName, BookEdition) 
SELECT IFNULL(Max(indexNum),0) + 1 as NewIndexNum, 'Birds', 'a12' 
FROM Books

これがSQL Fiddleです。

于 2013-01-15T19:10:49.987 に答える