SET IDENTITY_INSERT s on insert s (字段1,字段2,...) select 字段1,字段2,... from sales SET IDENTITY_INSERT s off--------------------------------------------- TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。它对有索引的表没有办法
--如果不愿意手工写,用生成SQL语句的方法:delcare @s varchar(8000) set @s='' select @s=@s+','+a.name from(select name from syscolumns where object_id('s')=id) a join(select name from syscolumns where object_id('sales')=id) b on a.name=b.name set @s=substring(@s,2,8000) exec('SET IDENTITY_INSERT s on insert into s('+@s+') select '+@s+' from sales')
TRUNCATE TABLE 不记录行级日志,但有数据页级的日志的记录! 对有,外键约束的表 no way!
是否因为 SET IDENTITY_INSERT s on 才必须将字段列写出来
是否因为 SET IDENTITY_INSERT s on 才必须将字段列写出来
是的吧!不写完整他会报错的。 没有 SET IDENTITY_INSERT s on 是可以不列出来
insert s (字段1,字段2,...) select 字段1,字段2,... from sales
SET IDENTITY_INSERT s off---------------------------------------------
TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。它对有索引的表没有办法
set @s=''
select @s=@s+','+a.name
from(select name from syscolumns where object_id('s')=id) a
join(select name from syscolumns where object_id('sales')=id) b on a.name=b.name
set @s=substring(@s,2,8000)
exec('SET IDENTITY_INSERT s on
insert into s('+@s+') select '+@s+' from sales')
对有,外键约束的表 no way!
才必须将字段列写出来
才必须将字段列写出来
没有 SET IDENTITY_INSERT s on 是可以不列出来