1

SQL を使用して既存のテーブルを操作しています。このテーブルに次のデータを挿入する必要があります。これは宿題の質問です!以下は質問と私のコードです。次のエラーが発生し続けます.....列 'ProductID'、テーブル 'jc0541535.dbo.Products' に値 NULL を挿入できません。列はヌルを許可しません。INSERT は失敗します。この ProductId を自動的に生成するにはどうすればよいですか?

  1. ProductID: 次に自動生成される ID
  2. カテゴリーID: 4
  3. 商品コード:dgx_640
  4. 製品名: ヤマハ DGX 640 88 キー デジタル ピアノ
  5. 説明: 長い説明が続きます
  6. 定価: 799.99
  7. 割引率: 0
  8. DateAdded: 今日の日付/時刻

    このステートメントに列リストを使用する

< これは私が使用したコードですが、正しく動作しません。誰かが理由を指摘してください。

INSERT INTO Products (ProductID,CategoryID,ProductCode,ProductName,Description,ListPrice,DiscountPercent ,DateAdded) VALUES(DEFAULT,4,'dgx_640','Yamaha DGX 640 88-Key Digital Piano', 'Long description to come.',799.99 ,0,CURRENT_TIMESTAMP);

4

5 に答える 5

2

使用しないでくださいDEFAULT-- 挿入ステートメントから列を削除してください:

INSERT INTO Products (CategoryID,ProductCode,ProductName,Description,ListPrice,DiscountPercent ,DateAdded) 
VALUES(4,'dgx_640','Yamaha DGX 640 88-Key Digital Piano', 'Long description to come.',799.99,0,CURRENT_TIMESTAMP);

SQL フィドルのデモ

また、他の人が言ったように、列がIDENTITY.

于 2013-09-22T21:52:58.190 に答える
0

SQL Server Management Studio で列のプロパティを確認します。ProductID の「Is Identity」が「Yes」に設定され、「Identity Increment」が 1 に設定されていることを確認します。

于 2013-09-22T21:51:18.840 に答える
0

design で、列 product id -> column properties -> 探して Identity Specification -> Identity Seed を探し、1 (または任意の値) ずつ増やして (Is Identity) を yes/true に設定します。

于 2013-09-22T21:52:38.967 に答える
0
DECLARE @ProductID INTEGER

SELECT @ProductID = ISNULL(MAX(ProductID),1)
FROM Products

INSERT INTO products(ProductID, CategoryID, ...)
VALUES(@ProductID, 4, ...)

これで要件を満たすことができますか?

于 2013-09-23T00:20:34.380 に答える