如何限制整个架构的大小?

时间:2014-04-19 07:04:00

标签: postgresql

每个用户都有自己的架构。

我想限制指定大小的每个架构。在阅读手册时,我发现它似乎没有这样的限制。可能吗?

drop schema jacob_001 cascade;
/*drop schema jacob cascade;*/
create schema jacob_001;
/*create schema jacob;*/

/*使用缺省的schema*/
set search_path to jacob_001;

create table messages(
       id    integer,
       message text,
       culture_location varchar(6),
       primary key (id,culture_location)
       );

create table media_types(
       /*code       char(2) primary key,*/
       id           integer primary key,
       description      text
       /*message_code      int*/
       );

1 个答案:

答案 0 :(得分:3)

Per Craig的评论,您无法在数据库级别强制实施配额。

引用:

http://wiki.postgresql.org/wiki/Schema_Size

CREATE OR REPLACE FUNCTION pg_schema_size(text)
    returns bigint
AS $$
SELECT sum(pg_relation_size(
           quote_ident(schemaname) || '.' || quote_ident(tablename)
       ))::bigint
FROM pg_tables
WHERE schemaname = $1
$$ LANGUAGE sql;

用法:

select pg_size_pretty(pg_schema_size('public'));