表结构如下
-- create table
create table oa_function
(
  f_id     decimal IDENTITY (1, 1) NOT NULL ,
  f_name   varchar(100),
)
把f_id建立为会自动加1的列
建立完毕后,我需要插入一些数据作为默认数据,SQL语句如下
insert into oa_function  values(111,'张三');
insert into oa_function  values(200,'李三');
执行后出现报错:当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'oa_function' 中为标识列指定显式值。
我想在insert之前修改f_id的类型为decimal,不自动累加
insert后,再修改回去,这2个修改列属性的语句应该怎么写?

解决方案 »

  1.   

    insert into oa_function(f_name)  values('张三');
    insert into oa_function(f_name)  values('李三');
    f_id 系统会自动填充
      

  2.   

    SET IDENTITY_INSERT oa_function ON
    insert into oa_function(f_id,f_name)  values(111,'张三');
    insert into oa_function(f_id,f_name)  values(200,'李三');
    SET IDENTITY_INSERT oa_function off
      

  3.   

    我知道系统会自动填充
    但是我insert进去的111 和 200 是固定了
      

  4.   

    SET IDENTITY_INSERT oa_function ON
    insert into oa_function(f_id,f_name)  values(111,'张三');
    insert into oa_function(f_id,f_name)  values(200,'李三');
    SET IDENTITY_INSERT oa_function off这样写还是会报错说
    仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'oa_function' 中为标识列指定显式值。
      

  5.   

    SET IDENTITY_INSERT oa_function ON
    --insert语句
    SET IDENTITY_INSERT oa_function off
      

  6.   


    create table oa_function
    (
      f_id     decimal IDENTITY (1, 1) NOT NULL ,
      f_name   varchar(100),
    )
    SET IDENTITY_INSERT oa_function ON
    insert into oa_function(f_id,f_name)  values(111,'张三');  --注意:这里的列名的列表(f_id,f_name)不能省。
    insert into oa_function(f_id,f_name)  values(200,'李三');
    SET IDENTITY_INSERT oa_function offselect * from oa_function/*
    f_id    f_name
    ---------------
    111 张三
    200 李三
    */
      

  7.   


    SET IDENTITY_INSERT oa_function ON
    SET IDENTITY_INSERT oa_function off