【问题标题】:How to insert a automatically generated Value "ID"如何插入自动生成的值“ID”
【发布时间】:2020-08-24 15:21:40
【问题描述】:

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

  1. ProductID:下一个自动生成的 ID
  2. 类别 ID:4
  3. 产品代码:dgx_640
  4. 产品名称:Yamaha DGX 640 88键数码钢琴
  5. 描述:详细描述即将到来
  6. ListPrice: 799.99
  7. 折扣百分比:0
  8. 添加日期:今天的日期/时间

    为此语句使用列列表

插入产品 (ProductID,CategoryID,ProductCode,ProductName,Description,ListPrice,DiscountPercent,DateAdded) VALUES(DEFAULT,4,'dgx_640','Yamaha DGX 640 88键数码钢琴', '详细描述即将到来。',799.99,0,CURRENT_TIMESTAMP);

【问题讨论】:

  • 我刚刚尝试删除 INSERT 语句中的 Product 列,以及 VALUES 语句中的值......现在错误是说表 Products 无效?这很奇怪,我不明白

标签: sql-server


【解决方案1】:

不要使用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 Fiddle Demo

另外,正如其他人所说,请确保该列是 IDENTITY

【讨论】:

  • 我刚试过这个BU,现在它告诉我错误是:无效的对象名称'Products'........我知道这是一个有效的表
  • “谢谢”我相信我必须和老师谈谈这个,因为我们无法更改表格中的属性。
【解决方案2】:

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

【讨论】:

  • 谢谢 Ant P。你是对的,很遗憾我认为我的老师不会允许我更改数据库中的属性。但是是的,你是对的!
【解决方案3】:

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

【讨论】:

  • 非常感谢您的帮助。不幸的是,作为学生,我们无法更改数据库中的属性,除非进行可能破坏我们剩余学期作业的严重更改。我将不得不与她谈谈她希望我们在早上使用的过程。感谢您的帮助
【解决方案4】:
DECLARE @ProductID INTEGER

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

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

这足以满足您的要求吗?

【讨论】:

    【解决方案5】:

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

    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);
    

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 2016-10-22
      • 2016-03-04
      • 1970-01-01
      • 2011-04-03
      • 2019-12-10
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多