代码之家  ›  专栏  ›  技术社区  ›  Brandon

如何从PostgreSQL数据库中删除表*或*视图?

  •  6
  • Brandon  · 技术社区  · 16 年前

    我在PostgreSQL数据库中有一个表或视图的名称,需要在单个pgSQL命令中删除。我怎么买得起?

    我能够选择表单系统表,以查看是否有任何表具有这样的名称,但仍停留在程序部分:

    SELECT count(*) FROM pg_tables where tablename='user_statistics';
    
    2 回复  |  直到 16 年前
        1
  •  13
  •   empi    16 年前
    DROP TABLE user_statistics;
    
    DROP VIEW user_statistics;
    

    完整语法:

    DROP TABLE

    DROP VIEW

    如果你想要一个完整的函数,我尝试了这样的方法:

    CREATE OR REPLACE FUNCTION delete_table_or_view(objectName varchar) RETURNS integer AS $$
    DECLARE
        isTable integer;
        isView integer;
    BEGIN
        SELECT INTO isTable count(*) FROM pg_tables where tablename=objectName;
        SELECT INTO isView count(*) FROM pg_views where viewname=objectName;
    
        IF isTable = 1 THEN
            execute 'DROP TABLE ' || objectName;
            RETURN 1;
        END IF;
    
        IF isView = 1 THEN
            execute 'DROP VIEW ' || objectName;
            RETURN 2;
        END IF;
    
        RETURN 0;
    
    END;
    $$ LANGUAGE plpgsql;
    
        2
  •  -4
  •   Brandon    13 年前

    考虑使用 删除表(如果存在) 删除视图(如果存在) 这样,如果失败,您就不会收到错误消息,只会收到通知。