2

我正在将此 Oracle 命令迁移到 PostgreSQL:

CREATE SYNONYM &user..emp FOR &schema..emp;

请向我建议如何迁移上述命令。

4

2 回答 2

4

PostgreSQL 不支持 SYNOSYM 或 ALIAS。Synonym 是 Microsoft SQL 2005 实现的非 SQL 2003 功能(我认为)。虽然它确实提供了一个有趣的抽象,但由于缺乏关系完整性,它可以被认为是一种风险。

也就是说,您可以创建一个同义词,向您的程序员宣传,围绕它编写代码,包括存储过程,然后有一天这个同义词(或链接或指针)的后端被更改/删除/等导致运行时间错误。我什至不认为准备会抓住这一点。

它与 unix 中的符号链接和 C/C++ 中的空指针相同。

而是创建一个数据库视图,只要它只包含一个表选择,它就已经可以更新。

CREATE VIEW schema_name.synonym_name AS SELECT * FROM schema_name.table_name;
于 2020-12-01T03:29:09.673 回答
2

你不需要同义词。

有两种方法:

  1. 使用模式搜索路径:

    ALTER DATABASE xyz SET search_path = schema1, schema2, ...;
    

    将保存表的模式放在search_path数据库(或用户)上,那么它可以在没有模式限定的情况下使用。

  2. 使用视图:

    CREATE VIEW dest_schema.tab AS SELECT * FROM source_schema.tab;
    

如果您在同一架构中有很多对象的同义词,则第一种方法很好。

于 2019-02-22T17:54:52.047 回答