如何移除PostgreSQL表的外键约束并保留对应列的索引
移除PostgreSQL表的外键约束(保留列、唯一约束及索引)
针对你的需求,直接执行以下两条ALTER TABLE语句即可移除目标表的所有外键约束,同时保留原有的列、唯一约束和索引:
-- 移除chat_id字段的外键约束 ALTER TABLE _read_status DROP CONSTRAINT _read_status_chat_fkey; -- 移除user_id字段的外键约束 ALTER TABLE _read_status DROP CONSTRAINT _read_status_user_info_pkey;
操作说明
- 这两条语句仅删除指定的外键约束,不会影响对应的
chat_id、user_id列,也不会删除表上的唯一约束(uk_chat_id_user_id、uk_chat_id_company_id)和已创建的索引(_idx_chat_id_user_id、_idx_chat_id_company_id)。 - 执行完成后,你的
_read_status表结构就会和目标结构完全一致。
验证操作(可选)
如果需要确认外键已被移除,可以查询表的约束信息:
SELECT conname, contype FROM pg_constraint WHERE conrelid = '_read_status'::regclass;
查询结果中应该不再包含_read_status_chat_fkey和_read_status_user_info_pkey这两个标记为f(外键约束类型)的约束。
内容的提问来源于stack exchange,提问作者NeverSleeps
相关产品推荐
相关产品推荐

