1

我正在使用 SQL 处理现有表。我必须将以下数据插入此表中。这是一个家庭作业问题!下面是问题和我的代码。我不断收到以下错误.....无法将值 NULL 插入到列“ProductID”、表“jc0541535.dbo.Products”中;列不允许空值。插入失败。我如何让这个 ProductId 自动生成?

  1. ProductID:下一个自动生成的 ID
  2. 类别编号:4
  3. 产品编号:dgx_640
  4. 产品名称:Yamaha 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
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 回答
0

检查 SQL Server Management Studio 中的列属性。确保 ProductID 的“Is Identity”设置为“Yes”,并且“Identity Increment”设置为 1。

于 2013-09-22T21:51:18.840 回答
0

在设计中,单击列产品 id -> 列属性-> 查找身份规范-> 身份种子并递增 1(或任何所需值)并将 (Is Identity) 设置为 yes/true。

于 2013-09-22T21:52:38.967 回答
0

我不得不把我的拿出来,它看起来像这样:试试这个

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);
于 2020-08-24T03:05:32.890 回答