1 正常场景

CREATE USER u1 PASSWORD 'u1.password';
set role u1 password 'u1.password';

-- ddl
DROP TABLE t1;
DROP FUNCTION f1;

CREATE TABLE t1(c1 INT, c2 TEXT);
-- dml
INSERT INTO t1 VALUES (1, 'aaa'), (2, 'bbb');
UPDATE t1 SET c2 = 'aba' WHERE c1 = 1;
SELECT * FROM t1;
DELETE FROM t1 WHERE c1 = 2;
-- func
CREATE FUNCTION f1() RETURNS INT AS $$ SELECT count(*)::INT FROM t1 $$ LANGUAGE sql;
SELECT f1();
-- trans
BEGIN;
SELECT * FROM t1;
COMMIT;

DROP TABLE t1;
DROP FUNCTION f1;

reset role;
select * from pg_audit_log;

2 异常场景

CREATE USER u1 PASSWORD 'u1.password';
CREATE TABLE st1(c1 INT, c2 TEXT);

set role u1 password 'u1.password';
-- doest't exist
SELECT * FROM nt1;
-- permission deny
SELECT * FROM st1;

reset role;
select * from pg_audit_log;