表结构如下
-- 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个修改列属性的语句应该怎么写?
-- 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个修改列属性的语句应该怎么写?
insert into oa_function(f_name) values('李三');
f_id 系统会自动填充
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
但是我insert进去的111 和 200 是固定了
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' 中为标识列指定显式值。
--insert语句
SET IDENTITY_INSERT oa_function off
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 李三
*/
SET IDENTITY_INSERT oa_function ON
SET IDENTITY_INSERT oa_function off