You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LIKE创建表并同步原表的PRIMARY KEY?

解决使用LIKE创建表并添加主键的语法错误

你的语句出错的核心原因是LIKE子句和后续的PRIMARY KEY约束之间缺少逗号,导致PostgreSQL无法正确解析两个表定义元素的分隔逻辑。

正确的手动添加主键语句

只需在LIKE子句末尾添加逗号,再显式定义主键即可:

CREATE TABLE new_123 (
    LIKE old_123 INCLUDING DEFAULTS,
    PRIMARY KEY (id)
);

可选:自动复制原表所有约束(PostgreSQL 12及以上版本)

如果需要完整复制原表的所有约束(包括主键),可以使用INCLUDING CONSTRAINTS选项,无需手动指定主键列:

CREATE TABLE new_123 (
    LIKE old_123 INCLUDING DEFAULTS INCLUDING CONSTRAINTS
);

注意:该选项会复制原表的所有约束(外键、唯一约束等),若仅需主键,手动定义的方式更灵活。

快速确认原表主键列(可选)

如果不确定原表的主键列名称,可通过系统表查询获取:

SELECT string_agg(attname, ', ') AS primary_key_columns
FROM pg_constraint
JOIN pg_attribute ON attrelid = conrelid AND attnum = ANY(conkey)
WHERE conrelid = 'old_123'::regclass AND contype = 'p';

查询结果会返回原表的主键列组合,可直接用于新表的主键定义。

内容的提问来源于stack exchange,提问作者sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:43:21