sql-server - 动态开启和关闭插入前后的 IDENTITY_INSERT
问题描述
select
row_number() over (order by 1) as rn, *
into
#execute_insert
from
#finaldata
where
noofrows > 0;
declare @intmin int, @intmax int
select @intmin = min(rn), max(rn)
from #execute_insert
begin
declare @query nvarchar(max) ='';
select @query = concat('ALTER TABLE ' + table_Name + 'NOCHECK CONSTRAINT All ')
If set Identity_Insert ON
select @query = 'insert Into' + @Table_Name + ' '+ @column_Name
+' select ' + @Column_Name
+' from '+@Table_Name+' '+ sql_query+''
Else Identity_insert Off
end
解决方案
无法Identity_Insert
在 SQL 中切换。但是,您可以使用dynamic sql
. 每次在表中插入一些数据时,在执行查询后Identity_Insert ON
为该表和它设置。close
您可以同时ON
使用OFF
一个命令,以确保它在执行查询后始终处于关闭状态。
.
.
.
-- your code
SET @query = 'SET IDENTITY_INSERT ' + @Table_Name + ' ON '
SET @query = @query + ' insert Into' + @Table_Name + ' '+ @column_Name
+' select ' + @Column_Name
+' from '+@Table_Name+' '+ sql_query+''
SET @query = @query + ' SET IDENTITY_INSERT ' + @Table_Name + ' OFF '
EXEC (@query )
.
.
.
注意:我没有检查您的查询,希望单独工作正常,这是设置IDENTITY_INSERT
ON
和OFF
单个查询语句的示例。
推荐阅读
- java - Kotlin 接口上的 lambda 表达式
- python - 在 Python 中从 ColorHunt.co 获取调色板
- swift - 更改 Ramotion/Fluid 的滑块最小值和最大值
- apache - 从 Apache 2.2 更改 301 的响应正文
- ansible - 运行 Ansible 剧本时出现 UNREACHABLE 错误
- javascript - 如何使用客户 JavaScript 在表格列表中创建
- multithreading - 如何将参数传递给 pyqt5 的 QRunnable?
- cassandra - Cassandra 将 5 节点集群从 2.2.8 升级到 3.0
- sql - SQL 每个客户端的最后一个订单
- c# - C# Datagrid 不使用 WinForm 调整大小