Databricks中使用REPLACE TABLE命令后新主键是否会被保留?
Databricks REPLACE TABLE后主键约束的保留问题
当你使用REPLACE TABLE mytableAS SELECT * FROMstaging_mytable``命令替换原表时,临时表staging_mytable中配置的主键约束不会自动保留到目标表mytable,必须后续手动通过ADD CONSTRAINT命令指定。
原因说明
Databricks的REPLACE TABLE AS SELECT(RTAS)命令核心逻辑是基于查询结果创建新表并替换原表,它只会复制临时表的列结构、数据以及部分基础属性(如分区配置、存储格式),但主键、外键这类约束属于表的元数据规则,不会被自动同步。
正确操作步骤
- 执行表替换命令:
REPLACE TABLE `mytable` AS SELECT * FROM `staging_mytable`
- 手动添加新主键约束:
ALTER TABLE `mytable` ADD CONSTRAINT pk_mytable PRIMARY KEY (你的主键列1, 你的主键列2)
注意:替换后原表的旧主键约束会被清除,所以必须重新添加临时表对应的新主键;添加前要确保
mytable中的数据符合新主键的唯一性要求,否则会触发校验报错。
内容的提问来源于stack exchange,提问作者FrancoisDuCoq
相关产品推荐
相关产品推荐

