Redshift使用CREATE TABLE...LIKE复制表未保留主键如何处理?
Redshift CREATE TABLE LIKE 保留主键约束解决方案
默认情况下,Redshift 的 CREATE TABLE ... LIKE 语法仅复制原表的列定义、数据类型、压缩编码、分布键、排序键等基础属性,默认不会携带主键、外键、默认值等附加属性,你遇到的主键丢失问题确实是因为遗漏了参数配置。
要实现主键约束的复制,需要额外指定 INCLUDING CONSTRAINTS 参数,正确写法如下:
CREATE TABLE new_table (LIKE orig_table INCLUDING CONSTRAINTS);
补充注意事项
- 如果你同时需要保留原表的字段默认值,可以叠加
INCLUDING DEFAULTS参数,示例:CREATE TABLE new_table (LIKE orig_table INCLUDING CONSTRAINTS INCLUDING DEFAULTS); INCLUDING CONSTRAINTS仅支持复制非空约束、主键约束、唯一约束,外键约束目前无法通过该语法复制,需要创建表后手动添加- 该参数仅在 Redshift 1.0.2483 及以上版本支持,若执行后仍不生效可先检查集群版本是否符合要求
内容的提问来源于stack exchange,提问作者Bex
相关产品推荐
相关产品推荐

