我经常看到以下有关如何将一个表复制到另一个表的建议:
这一个应该创建一个具有相同属性(即主键和约束)的表,但它实际上在PostgreSQL中不起作用:
CREATE TABLE New_Users LIKE Old_Users;
这个应该只是复制内容,一些帖子(比如这个)[https://stackoverflow.com/a/11433568]声称你可以在第一个命令之后复制内容。
INSERT INTO New_Users SELECT * FROM Old_Users GROUP BY ID;
在PostgreSQL中,如果表不存在,第二个命令似乎会创建表,如果表已经存在,则会失败,但它确实没有保留原始表的属性。
我想原子地删除一个表,然后创建一个同名的新表,但使用另一个现有表的内容和属性。
BEGIN;
DROP TABLE New_Users;
CREATE TABLE New_Users (LIKE Old_Users);
INSERT INTO New_Users SELECT * FROM Old_Users;
END;
这将自动删除当前版本的表,创建一个包含所有属性的 backbone ,最后用引用表的内容填充它。我如何在PostgreSQL中实现这一点?
1条答案
按热度按时间axr492tv1#
可以将like与选项一起使用
或者更快