在 sql 服务器的 table 列中添加 current_value

Adding current_value in a table column in sql server

我想将序列的当前值(table1 中的主键)插入到 table2 的列中。 我正在使用: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)

错误:

Incorrect syntax near the keyword 'SELECT'.

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

DEPT_ID的值是DEPTtable的外键,也是一个序列。 让我知道任何替代方法。最好在一条语句中,因为我必须在 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], [DEPT_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)