首页 > 解决方案 > 在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 更新运行整个查询。

标签: insertsubquerysequencesql-server-2016

解决方案


使用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';

推荐阅读