【问题标题】:I am having trouble with SQL Server Express's identity feature我在使用 SQL Server Express 的身份功能时遇到问题
【发布时间】:2012-05-14 06:36:12
【问题描述】:

我正在使用 SQL Server Express,我创建了这个表

CREATE TABLE inventory
(
    id INT NOT NULL IDENTITY(1,1),
    description nvarchar(50),
    quantity int,
    price money
)

当我插入此语句时:

INSERT INTO inventory VALUES('water', 20, 1.50)

我收到此错误:

查询中的列数和表必须匹配。 [ 数字 查询中的列数 = 3,表中的列数 = 4]

当我发表这句话时:

INSERT INTO inventory VALUES(1, 'water', 20, 1.50)

我收到此错误:

无法修改该列。 [列名=id]

我认为身份会自动增加值,所以我也不能这样做,我该如何解决?提前致谢

【问题讨论】:

    标签: sql-server sql-server-express identity-column


    【解决方案1】:

    您必须在插入中明确指定列

    insert Inventory(Description, Quantity, Price) values ( ...)
    

    【讨论】:

    • 但是我在常规的sql server中没有这样做,为什么这是特定于这个db的?谢谢,虽然我终于可以开始编码了。
    • @user1393108:这是一种基本 SQL 技术——您应该始终定义要插入的列的列表。对于IDENTITY,由于 SQL Server(所有 版本 - NOT 特定于 Express 版本)将确定值本身,因此不允许您将任何值插入它 - 因此您需要从要插入的列列表中省略它。
    • 如果你想手动设置身份,你可以使用SET IDENTITY_INSERT ON
    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多