如何在PostgreSQL中为表创建同义词

时间:2019-02-22 17:16:01

标签: postgresql database-migration synonym

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

def get_images(directory=None):
    image_list = [] 
    file_list = []
    if directory == None:
        directory = os.getcwd() 

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

2 个答案:

答案 0 :(得分:0)

您不需要同义词。

有两种方法:

  1. 使用架构搜索路径:

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

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

  2. 使用视图:

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

如果在同一模式中对象有很多同义词,则第一种方法很好。

答案 1 :(得分:0)

PostgreSQL不支持SYNOSYM或ALIAS。同义词是Microsoft SQL 2005(我认为)实现的非SQL 2003功能。尽管确实提供了有趣的抽象,但是由于缺乏关系完整性,可以将其视为一种风险。

也就是说,您可以创建一个同义词,并将其发布给您的程序员,并围绕它编写代码,包括存储过程,然后有一天该同义词(或链接或指针)的后端将被更改/删除/以此类推。运行时错误。我什至不认为预备会抓住这一点。

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

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

CREATE VIEW schema_name.synonym_name AS SELECT * FROM schema_name.table_name;