【问题标题】:How to set seed value and incremental value for identity column in Azure Synapse?如何在 Azure Synapse 中为标识列设置种子值和增量值?
【发布时间】:2022-07-25 09:36:16
【问题描述】:

我在 Azure Synapse 数据仓库中有一张带有 DDL 的表,如下所示:

因敏感信息而隐藏

我尝试使用下面的 sql 将值附加到此表中 3 次,id 列的种子值为 45,增量值为 60,尽管 IDENTITY(1,1)。

因敏感信息而隐藏

[![在此处输入图像描述][1]][1] 此外,我使用下面的 SQL 将种子值检查为 1,将增量值检查为 1。但是,该表未按预期提供 id 值

因敏感信息而隐藏

我该如何解决这个问题?

亲切的问候,

【问题讨论】:

    标签: sql data-warehouse azure-synapse


    【解决方案1】:

    Azure Synapse Analytics 专用 SQL 池中的IDENTITY 列确实保证唯一值,但 do not guarantee sequential values。原因是数据分布在 60 个分布中;每个分布都有一组唯一的标识值。

    如果拥有顺序列对您很重要,则重新创建不带 IDENTITY 属性的表并将您的 INSERT 语句更改为以下代码,该代码将生成顺序 ID:

    
    DECLARE @now DATETIME2 = GETDATE()
    
    INSERT INTO trans_customer_cdm_ejkb.cdm_file_process_history
    (id, layer, ingest_partition, [status], last_update_time, pipeline_run_id)
    SELECT
    (SELECT ISNULL(MAX(id),0) FROM trans_customer_cdm_ejkb.cdm_file_process_history) +1 as id, 
     'src2stg', '2022-02-18-03', 'success', @now, 'Test'
    
    SELECT * FROM trans_customer_cdm_ejkb.cdm_file_process_history
    

    由于您的代码只是插入单行,因此我执行了+1,但通常您会执行 + ROW_NUMBER() OVER (ORDER BY [SomeColumn])

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2018-12-27
      • 1970-01-01
      • 2011-08-04
      相关资源
      最近更新 更多