gpt4 book ai didi

sql - 非标识列自增

转载 作者:行者123 更新时间:2023-12-02 17:26:15 25 4
gpt4 key购买 nike

我正在从事一个整合数据的项目(来自 2 个不同的数据库)。我创建了一个包含几列的表:

  • MAPPING_ID 整型
  • ContentID 整型
  • ContentValue varchar(200)

例如,当我对原始数据源执行第一组插入时,一切都很好。

Mapping_ID: 53
ContentID: 53
ContentValue: Original Data 1

Mapping_ID: 54
ContentID: 54
ContentValue: Original Data 2

但是当我针对另一个来源(我要合并的数据)执行第二组插入时,我希望 Mapping_ID 列继续到下一个数字(即 55、56、57...)

我查看了 row_number 函数,但它从 1 开始。有没有办法让它从 55 开始?

我想我可以使 Mapping_ID 列成为身份字段,但在第一次插入时将其关闭,然后使用最大值 (54) 为它做种,然后在第二次插入时将其打开。

还有其他方法可以实现吗?

最佳答案

在 SQL Server 2012+ 中,您可以使用 SEQUENCE使用自动增量值填充非标识列的对象。另外,您可以对不同的表使用相同的 SEQUENCE 来传递计数并从 SELECT 和 UPDATE 查询中的序列中获取值。

首先,创建序列:

CREATE SEQUENCE SchemaName.SequenceName
START WITH 1
INCREMENT BY 1 ;

然后,使用 values from sequence 创建 DEFAULT 约束在必填列上:

ALTER TABLE tableName ADD CONSTRAINT constraint_unique_name DEFAULT NEXT VALUE FOR SchemaName.SequenceName FOR Mapping_ID;

关于sql - 非标识列自增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38515178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com