2010年9月27日 星期一

PostgreSQL Schema 相關資訊取得方式

--列出所有資料表
SELECT * FROM information_schema.tables where table_schema='public'

--列出所有 Sequence
SELECT * FROM information_schema.sequences where sequence_schema='public'

--列出所有 Trigger
SELECT * FROM information_schema.routines where routine_schema='public' and data_type='trigger'

--列出角色可用資料表清單
select * from information_schema.role_table_grants where table_schema='public' and table_name in (SELECT table_name FROM information_schema.tables where table_schema='public')

--列出色角可用 Trigger
select * from information_schema.role_routine_grants where routine_schema='public' and routine_name in (SELECT routine_name FROM information_schema.routines where routine_schema='public' and data_type='trigger')

--列出可用角色清單
select * from information_schema.enabled_roles

--http://www.postgresql.org/docs/8.2/static/sql-grant.html
grant all on _data_history_sequence_seq to "postgres";

--http://www.postgresql.org/docs/8.2/static/sql-revoke.html
revoke all on _data_history_sequence_seq from "postgres";

2010年9月3日 星期五

在 PostgreSQL 如何透過 SQL 中斷其他 Connection?

首先要得知資料庫中有那些連線正在活動:
select * from pg_stat_activity


pg_stat_activity 是一個資料表,裡面包含了許多資訊,其中比較重要的是「procpid」欄位,如果要中斷別人的資料庫連線,需要這個欄位的資料當參數。


中斷資料庫連線:
select pg_terminate_backend(123);


pg_terminate_backend() 是一個函數,裡面要傳的參數就是「procpid」的資料,執行完成後,該條連線就會被中斷。


這些動作都需要權限才能執行。