如何解决在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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。