在已有标识列和默认值约束的表中插入数据,复制表

时间:2021-07-09 09:55:07

一.如有以下表结构

CREATE TABLE [SAMPLE]
(
 ID INT NOT NULL IDENTITY(1,1),
 CITY VARCHAR(20) CONSTRAINT DF_CITY DEFAULT 'CQ',
 [NAME] VARCHAR(30),
)

要插入一行数据需要使用以下语句

SET IDENTITY_INSERT [SAMPLE] OFF

INSERT INTO [SAMPLE] VALUES(DEFAULT,'chen')  这里标识列值不对指定,如果要使用默认值则在Values里使用DEFAULT关键字)

如果只插入带标识列的某几些,则必须将DENTITY_INSERT 设置为 ON后,然后才能对各个列插入数据
insert into [sample] (id, city, name) values(9, ch, 'ww')


二.使用insert复制表中数据

   使用insert复制sample表中的数据到abc表,则两表各列字段必须匹配,且不则复制约束,语法如下
   insert abc  (id, city, name)  select [id], city, [name] from [sample]
  此语句虽然可以复制源表sample里的标识列值,麻烦之处在于必指定每个字段,
  不知还有没有其它更好的方法?