MySQL的DDL中KEY关键字的含义是什么?对应PostgreSQL如何实现?
问题解答
关于MySQL中KEY的含义
MySQL语法中,KEY是INDEX的同义词,你给出的示例里的KEY ID_SECOND (ID_SECOND) 本质是给ID_SECOND字段创建普通二级索引,不是外键:外键需要显式使用FOREIGN KEY关键字声明才会生成,和这里的KEY没有关系。
PostgreSQL 等效实现方式
PostgreSQL没有将KEY作为索引的别名语法,要实现同等效果,在建表完成后单独创建对应字段的普通索引即可:
-- 你现有的建表语句可以调整为更简洁的写法,避免手动管理序列 CREATE TABLE master ( ID SERIAL NOT NULL, ID_SECOND integer DEFAULT NULL, CONSTRAINT master_pkey PRIMARY KEY (ID) ); -- 等效MySQL的KEY ID_SECOND的索引语句 CREATE INDEX idx_master_id_second ON master (ID_SECOND);
补充说明
- 你原有建表语句中主键约束名和表名重名(均为
master),在PostgreSQL中会触发重名错误,因此建议修改主键约束名,常规命名规则为表名_pkey。 - 如果需要和你原有写法兼容,继续使用自定义序列
mst_master_id_seq,只需要额外执行上面的索引创建语句即可实现和MySQL DDL完全一致的效果。
内容的提问来源于stack exchange,提问作者Maxes
相关产品推荐
相关产品推荐

