考虑下表和 SQL微软的INSERT文档 https://technet.microsoft.com/en-us/library/dd776381(v=sql.105).aspx#ColumnValues处理 IDENTITY 列:
CREATE TABLE dbo.T1 (column_1 int IDENTITY, column_2 VARCHAR(30));
GO
INSERT T1 (column_2) VALUES ('Row #2');
The INSERT
声明没有具体说明column_1
作为表的一列,SQL Server 会自动填充该标识列的下一个值。这是处理标识列的正常方式。
如何在指定列名称的同时具有相同的行为?
例如,我正在寻找某物 like:
INSERT INTO T1 (column_1, column_2)
VALUES (NEXT VALUE, 'Row #3');
GO
我不相信NEXT VALUE
这里可以工作,但是有什么东西可以工作吗?是否有一个关键令牌或函数指示应使用身份列?
注意:我问的原因是我使用的框架要求在列列表中指定所有列。
如果您使用的是 SQL Server 2012 及更高版本,则可以使用序列。但你必须删除IDENTITY
财产来自Column1
第一的。这只能通过复制并重命名新表来完成。
CREATE SEQUENCE Column1_Sequence
AS int
START WITH 0;
CREATE TABLE T1
(
Column1 int DEFAULT (NEXT VALUE FOR Column1_Sequence) PRIMARY KEY
, Column2 nvarchar(30)
)
之后,您可以通过两种方式向表中插入数据:
INSERT INTO T1 (Column1, Column2)
SELECT NEXT VALUE FOR Column1_Sequence
, 'Row #2'
INSERT INTO T1 (Column2)
SELECT 'Hello world'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)