我正在将这个 Oracle 命令迁移到 PostgreSQL:
CREATE SYNONYM &user..emp FOR &schema..emp;
请为我提供建议,如何迁移上述命令。
我正在将这个 Oracle 命令迁移到 PostgreSQL:
CREATE SYNONYM &user..emp FOR &schema..emp;
using the schema search path:
ALTER DATABASE xyz SET search_path = schema1, schema2, ...;
Put the schema that holds the table on the search_path
of the database (or user), then it can be used without schema qualification.
using a view:
CREATE VIEW dest_schema.tab AS SELECT * FROM source_schema.tab;
如果在同一架构中有很多对象的同义词,第一种方法是不错的选择。
Original Answer翻译成"最初的回答"
PostgreSQL不支持SYNOSYM或ALIAS。Synonym是由Microsoft SQL 2005实现的非SQL 2003功能(我认为)。虽然它提供了一个有趣的抽象,但由于缺乏关系完整性,它可能被视为一种风险。
也就是说,你可以创建一个同义词,向程序员宣传它,编写围绕它的代码,包括存储过程,然后某一天更改/删除等,这个同义词(或链接或指针)的后端导致运行时错误。我甚至觉得prepare也无法捕捉到这一点。
这与unix中的符号链接和C/C ++中的空指针是相同的陷阱。
但是最好创建一个DB视图,只要它仅包含一个表选择,它就已经可以更新。
CREATE VIEW schema_name.synonym_name AS SELECT * FROM schema_name.table_name;
search_path
的方法:https://dev59.com/h2ox5IYBdhLWcg3wpV3F#9067777 - Erwin Brandstetter