当我执行下面的脚本时,我有以下错误。错误是关于什么,如何解决?

Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)

错误:

服务器:Msg 544,级别16,状态1,线路1 当IDENTITY_INSERT设置为OFF时,无法为表'table'中的标识列插入显式值。


当前回答

如果你在使用带有sequize -typescript npm的sql-server时遇到这个问题,请确保将@AutoIncrement添加到ID列:

  @PrimaryKey
  @AutoIncrement
  @Column
  id!: number;

其他回答

不要给OperationID赋值,因为它会自动生成。试试这个:

Insert table(OpDescription,FilterID) values ('Hierachy Update',1)

如果您正在使用liquibase更新SQL Server,则可能试图将记录键插入到autoIncrement字段中。通过从插入中删除列,脚本应该可以运行。

<changeSet id="CREATE_GROUP_TABLE" >
    <createTable tableName="GROUP_D">
        <column name="GROUP_ID" type="INTEGER" autoIncrement="true">
            <constraints primaryKey="true"/>
        </column>
    </createTable>
</changeSet>

<changeSet id="INSERT_UNKNOWN_GROUP" >
    <insert tableName="GROUP_D">    

        <column name="GROUP_ID" valueNumeric="-1"/>
 ...
    </insert>
</changeSet>

在该表的实体中,将DatabaseGenerated属性添加到标识插入设置的列之上:

例子:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TaskId { get; set; }

我不确定“插入表”的用途是什么,但如果你只是想插入一些值,请尝试:

Insert Into [tablename] (OpDescription,FilterID)
values ('Hierachy Update',1);

我有同样的错误消息出现,但我认为这应该工作。只要是主键,ID就应该自动递增。

设置该字段的身份增量时,不能在“OperationID”列中插入数据。

不要在该字段中输入值,它将自动设置。

Insert table(OpDescription,FilterID)
values ('Hierachy Update',1)