PostgreSQL 使用 ctid 修改完全重复的行

场景

表没有主键,且存在内容完全相同的多行数据:

dept_id name
1001 张三
1001 张三

普通字段无法唯一定位某一行。

使用 ctid

ctid 是 PostgreSQL 的系统列,可以临时唯一定位当前行。

查询

sql 复制代码
SELECT ctid, *
FROM employee;

结果:

text 复制代码
ctid   | dept_id | name
-------+---------+------
(0,1)  | 1001    | 张三
(0,2)  | 1001    | 张三

修改指定行

sql 复制代码
UPDATE employee
SET name = '王五'
WHERE ctid = '(0,1)';

注意

ctid 是行的物理位置,可能随数据更新而变化。

适合临时处理重复或脏数据,不适合作为主键长期使用。

相关推荐
weixin_448119948 小时前
Datawhale DeepSeek Harness 技术入门与架构原理 笔记4
笔记·架构
果壳science20 小时前
张祥前实验如何获取正电荷
笔记·科技·嵌入式硬件·硬件工程·制造
大叔学Linux21 小时前
FreeRTOS任务切换笔记
arm开发·笔记
职豚求职小程序刷题1 天前
易方达基金2027秋招笔试|考什么+场次提醒
笔记
无锡银洲自动化1 天前
煤粉测点频繁堵管?FD 防堵风压取样器现场调试小结
笔记·产品运营
ACP广源盛139246256731 天前
Type-C 扩展坞选型笔记:DP1.4a 转 HDMI2.0 桥接方案 GSV2201E @ACP评估
笔记·硬件架构·硬件工程·视频·hdmi·国产芯片
xian_wwq1 天前
【学习笔记-一文读懂系列】读懂GBZ-195-2026《人工智能 工业智能体参考架构》
笔记·学习
ss2731 天前
AI时代首先数据库-PostgreSQL实战笔记 | 19 PostgreSQL逻辑备份:pg_dump与pg_dumpall
数据库·笔记·postgresql
flytalei1 天前
逐浪笔记 GitOps 实战:Jenkins 构建、Argo CD 同步与 Git 回滚
笔记·git·jenkins