参考 postgresql-recursive-query
参考 postgresql_triggers
参考 CREATEAGGREGATE
参考 createType
创建function CREATE OR REPLACE FUNCTION toolkit.func_kill_process(in_username varchar, in_dbname varchar) RETURNS boolean AS $body$ DECLARE b_result boolean default false; cur_pid cursor for select pid from pg_stat_activity where usename = lower(in_username) and datname = lower(in_dbname) and pid<>pg_backend_pid(); BEGIN for tmp_pid in cur_pid loop b_result = pg_terminate_backend(tmp_pid.pid); if b_result = true then raise notice '%s', 'user ' || in_username || ' process ' || tmp_pid.pid || ' killed!'; end if; end loop; return true; END; $body$ LANGUAGE PLPGSQL;
秒 ==> 日期(‘yyyymmdd’) select to_char((timestamp with time zone 'epoch'+绝对秒数 * interval '1 second'),'yyyymmdd'); 或 select round(extract(epoch from current_timestamp::timestamp with time zone));
参考 functions-matching
dual虚拟表创建方法 ``` drop table if exists dual cascade; create table dual ( dummy varchar(1) );
参考 createsequence
参考 installing-plpython