您好,在同一张表上复制数据库记录的最简单方法是什么?
我的问题是我正在执行此操作的表有很多列,比如 100+,我不喜欢解决方案的样子。这是我所做的(这是在 plpqsql 函数中):...
1.重复记录
INSERT INTO history
(SELECT NEXTVAL('history_id_seq'), col_1, col_2, ... , col_100)
FROM history
WHERE history_id = 1234
ORDER BY datetime DESC
LIMIT 1)
RETURNING
history_id INTO new_history_id;
2.更新部分栏目
UPDATE history
SET
col_5 = 'test_5',
col_23 = 'test_23',
datetime = CURRENT_TIMESTAMP
WHERE history_id = new_history_id;
这是我试图解决的问题
- 列出所有这 100 多列看起来很蹩脚
- 当最终添加新列时,该功能也应该更新
- 在单独的数据库实例上,列顺序可能不同,这会导致函数失败
我不确定是否可以再次列出它们(解决问题 3),insert into <table> (<columns_list>) values (<query>)
但查询看起来更丑陋。
我想实现像“插入”这样的东西,但这似乎是不可能的,唯一的主键约束会引发重复错误。
有什么建议么?
提前感谢您的时间。