微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

function – 截断PostgreSQL中模式中的所有表

参见英文答案 > Truncating all tables in a Postgres database                                    9个
我试图使用Postgresql截断模式中的所有表.它显示错误

ERROR:  relation "Building" does not exist
CONTEXT:  sql statement "TruncATE TABLE "Building" CASCADE"
PL/pgsql function truncate_schema(character varying) line 15 at EXECUTE statement

这是我使用的功能

CREATE OR REPLACE FUNCTION truncate_schema(schema IN VARCHAR) RETURNS void AS $$
DECLARE
    statements CURSOR FOR
        SELECT table_name FROM @R_4_4045@ion_schema.tables
WHERE table_type = 'BASE TABLE' AND table_schema = schema;
BEGIN
    FOR stmt IN statements LOOP
        EXECUTE 'TruncATE TABLE ' || quote_ident(stmt.table_name) || ' CASCADE';
    END LOOP;
END;
$$LANGUAGE plpgsql;

怎么做得好?

解决方法

试试这样

CREATE OR REPLACE FUNCTION truncate_schema(_schema character varying)
  RETURNS void AS
$BODY$
declare
    selectrow record;
begin
for selectrow in
select 'TruncATE TABLE ' || quote_ident(_schema) || '.' ||quote_ident(t.table_name) || ' CASCADE;' as qry 
from (
     SELECT table_name 
     FROM @R_4_4045@ion_schema.tables
     WHERE table_type = 'BASE TABLE' AND table_schema = _schema
     )t
loop
execute selectrow.qry;
end loop;
end;
$BODY$
  LANGUAGE plpgsql

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐