在SQL Server的表列中添加current_value

问题描述

我想将序列的当前值(表1中的主键)插入到表2的列中。 我正在使用:MS SQL SERVER 2016

我尝试过的查询:

INSERT INTO [dbo].[Employee] ([EMP_ID],[DEPT_ID],[DESCRIPTION]) 
VALUES (NEXT VALUE FOR EMP_ID_SEQ,SELECT current_value FROM sys.sequences WHERE [name]= 'DEPT_ID_SEQ',NULL)

错误:

关键字“ SELECT”附近的语法不正确。

如果我单独运行SELECT current_value FROM sys.sequences WHERE [name]= 'DEPT_ID_SEQ',效果很好。

DEPT_ID的值是FK到DEPT表,也是一个序列。 让我知道其他替代方法。最好在一个语句中,因为我必须将其模制在liquibase标签中,并通过liquibase更新运行整个查询。

解决方法

使用INSERT INTO ... SELECT

INSERT INTO [dbo].[Employee] ([EMP_ID],[DEPT_ID],[DESCRIPTION])
CONVERT(int,SELECT NEXT VALUE FOR EMP_ID_SEQ),current_value,NULL
FROM sys.sequences WHERE [name] = 'DEPT_ID_SEQ';
,

感谢@Tim学会了一些新东西:) 但可悲的是,由于liquibase的复杂性,我不得不寻找其他选择: 下面的查询效果很好,也易于整合到liquibase中。

INSERT INTO [dbo].[Employee] ([EMP_ID],[DESCRIPTION]) 
VALUES (NEXT VALUE FOR EMP_ID_SEQ,(select CAST(SELECT current_value FROM sys.sequences WHERE [name]= 'DEPT_ID_SEQ') As INT)),NULL)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...