首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Synapse SQL:将临时表合并到主表和自动增量标识中

Synapse SQL:将临时表合并到主表和自动增量标识中
EN

Stack Overflow用户
提问于 2021-10-25 16:12:19
回答 1查看 188关注 0票数 1

Azure Synapse有一种不同的主键(https://docs.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-table-constraints)方法,它不允许传统的身份列(例如,INT IDENTITY(1,1) NOT NULL PRIMARY KEY)

我想使用merge语句来更新我已有的表,但使用Synapse SQL时,我不确定如何在合并新数据时获得自动增加的主键。考虑以下MWE:

代码语言:javascript
复制
CREATE TABLE [table1]
  (  
    [primaryKey] INT IDENTITY(1,1) NOT NULL,
    [id] INT,
    [name] VARCHAR(25)
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX,
DISTRIBUTION = HASH([id])
);

CREATE TABLE [table1_staging]
  (  
    [id] INT,
    [name] VARCHAR(25)
  );

INSERT INTO [table1_staging] 
(id, name) VALUES (1, 'john');


-- run merge
MERGE [table1] AS TARGET
USING [table1_staging] AS SOURCE 
-- match on ID
ON (TARGET.id = SOURCE.id)
-- when no match; insert
WHEN NOT MATCHED BY TARGET 
THEN INSERT ([id], [name]) VALUES(SOURCE.[id], SOURCE.[name]);

-- cannot update identity column

推荐的创建主键(INT PRIMARY KEY NONCLUSTERED NOT ENFORCED)的方法不会自动递增,这会导致合并失败,因为它不允许使用NULL。

EN

回答 1

Stack Overflow用户

发布于 2021-10-26 07:52:06

你能试着把它打开吗。

将IDENTITY_INSERT table1设置为ON;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69711454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档