我正在使用SQL处理现有表。我必须在此表中插入以下数据。这是一个功课问题!以下是问题和我的代码。我不断收到以下错误.....无法将值NULL插入列'ProductID',表'jc0541535.dbo.Products';列不允许空值。 INSERT失败。如何让ProductId自动生成?
- ProductID:下一个自动生成的ID
- CategoryID:4
- ProductCode:dgx_640
- 产品名称:Yamaha DGX 640 88键数码钢琴
- 描述:详细描述
- ListPrice:799.99
- DiscountPercent:0
- DateAdded:今天的日期/时间
醇>使用此陈述的列列表
<这是我使用的代码,但它无法正常工作。有人可以指出原因。
插入产品 (ProductID,CategoryID,ProductCode,ProductName,Description,ListPrice,DiscountPercent,DateAdded) VALUES(DEFAULT,4,'dgx_640','Yamaha DGX 640 88键数码钢琴', “很久以来的描述。”,799.99,0,CURRENT_TIMESTAMP);
答案 0 :(得分:2)
不要使用DEFAULT
- 只需从insert语句中删除列:
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);
此外,正如其他人所说,请确保该列为IDENTITY
。
答案 1 :(得分:0)
检查SQL Server Management Studio中的列属性。确保ProductID的“Is Identity”设置为“Yes”,并且“Identity Increment”设置为1。
答案 2 :(得分:0)
在设计中,点击列产品ID - >列属性 - >寻找身份规范 - >身份种子和增加1(或任何所需的值)并设置(Is Identity)为yes / true。
答案 3 :(得分:0)
DECLARE @ProductID INTEGER
SELECT @ProductID = ISNULL(MAX(ProductID),1)
FROM Products
INSERT INTO products(ProductID, CategoryID, ...)
VALUES(@ProductID, 4, ...)
这是否足以满足您的要求?
答案 4 :(得分: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);