sql-server - 如何插入选择从变量开始的序列?
问题描述
这里有一个关于 SO 的问题,从那时起就被删除了。但是,当我在研究解决它的方法时,我正在编写一个避免使用标识列并使用序列本身的脚本:
create table table1(Id int primary key, group_id int, Name varchar(64))
insert into table1(Id, group_id, Name) values (1, 1, 'a'), (2, 1, 'b'), (4, 1, 'c'), (8, 1, 'd')
declare @MaxId as int
select @MaxId = max(Id) + 1 from table1
declare @sql varchar(max)
set @sql = N'CREATE SEQUENCE MySequence AS INTEGER START WITH ' + cast(@maxId as varchar(10))
exec(@sql)
insert into table1(id, group_id, Name)
select next value for MySequence, 2, Name
from table1
where group_id = 1;
这实际上是有效的,即它成功地插入了四个动态生成的 id 记录。
然而,部分
declare @sql varchar(max)
set @sql = N'CREATE SEQUENCE MySequence AS INTEGER START WITH ' + cast(@maxId as varchar(10))
exec(@sql)
在我看来,这是非常违反直觉和骇人听闻的。
问题:有没有办法定义从变量值开始的序列而不生成文本并执行它?
解决方案
CREATE SEQUENCE 语法文档显示常量是必需的,因此您不能在 DDL 语句中指定变量。
推荐阅读
- python - 如何在python中解码字符串中的JSON特殊字符?
- python - 创建以排序方式返回项目的 BinarySortTree 方法
- javascript - 如何在表格行中自动继续有序列表编号
- java - 函数“transform(Classloader....)”有效,但修改后的 .class 程序没有可见的输出
- amazon-web-services - 如何将 API 调用的输出保存到 DynamoDB?
- amazon-web-services - AWS QuickSight 状态随时间变化
- php - PHPUnit:PDOException:SQLSTATE [HY000] [2002]连接被拒绝
- express - createProxyMiddleware 在 Azure Webapp 上不起作用
- datatables - 将数据添加为数组时如何指定行的id
- python - 有没有办法优化滚动函数计算?