sql-server-2008 - SQL 使用变量设置 IDENTITY 字段

标签 sql-server-2008 tsql dynamic-sql identity-column

全部,我要开始编号IDENTITY字段基于从另一个表获得的当前最大值。所以我尝试了以下内容

DECLARE @CurrentES INT;
SET @CurrentES = (SELECT MaxES 
                  FROM [NDB]..[TmpMaxES]) + 1;
ALTER TABLE BA 
ADD ES INT IDENTITY(@CurrentES, 1);

但这不会接受变量作为 IDENTITY 中的种子值。怎样才能达到我的要求?

谢谢你的时间。

最佳答案

做这个和其他非变量允许的任务,可以使用EXEC函数,如下:

DECLARE @CurrentES INT;
SET @CurrentES = (SELECT MaxES 
                  FROM [NDB]..[TmpMaxES]) + 1;

DECLARE @Statement VARCHAR(200)

SET @Statement = 'ALTER TABLE BA 
ADD ES INT IDENTITY(' + CAST(@CurrentES AS VARCHAR) + ', 1);'

EXEC (@Statement)

关于sql-server-2008 - SQL 使用变量设置 IDENTITY 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11629926/

相关文章:

function - 在 PostgreSQL 中截断模式中的所有表

SQL Server 2008,将 'x' 添加到自动增量值

SQL 2008 数学在 WHERE 子句中失败

SQL 服务器 2008 : Insert variable into DML statements using Stored Procedure

sql - 从 SQL 表中查找不连续性

c# - 使用 C# 和存储过程解析文本文件并将其加载到数据库中

sql - T-SQL通过by子句进行分组

sql - 如何优化这些 T-SQL 查询?

postgresql - 了解 PL/pgSQL 函数中 int 文字与 int 参数之间的区别

postgresql - SELECT 的 EXECUTE ... INTO 未实现