如何在模式中重命名表?

我正在使用 PostgreSQL 9.x,我想重命名一个表:

CREATE TABLE new (id int);
ALTER TABLE new RENAME TO old;
DROP TABLE old;

正确地重命名表。但是这个 SQL 代码:

CREATE SCHEMA domain;
CREATE TABLE domain.old (id int);
ALTER TABLE domain.old RENAME TO domain.new;

失败,错误如下:

错误: 在“或接近”处的语法错误

下划线的“。”是介于“域”和“新”之间的那个

72082 次浏览

One way to do this:

ALTER TABLE domain.old RENAME TO new

Other way:

SET search_path TO domain;
ALTER TABLE old RENAME TO new;

Documentation for search_path.

  1. Switch to your database
machine$\c my_database
  1. Tename the db
my_databse=# alter table old_name rename to new_name;
SET search_path TO domain;
ALTER TABLE IF EXISTS old_table_name RENAME TO new_table_name;