PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

3 cách liệt kê tất cả các kích hoạt cho một bảng đã cho trong PostgreSQL

Dưới đây là ba tùy chọn để liệt kê các trình kích hoạt cho một bảng nhất định trong PostgreSQL.

information_schema.triggers Xem

Dạng xem này chứa tất cả các hàm và thủ tục trong cơ sở dữ liệu hiện tại mà người dùng hiện tại sở hữu hoặc có một số đặc quyền ngoài SELECT trên.

Một trong các cột trong chế độ xem này là event_object_table , chứa tên của bảng mà trình kích hoạt được xác định trên đó.

Do đó, chúng tôi có thể sử dụng chế độ xem này để lấy các trình kích hoạt cho một bảng cụ thể như sau:

SELECT
    trigger_schema,
    trigger_name,
    event_manipulation,
    action_statement
FROM information_schema.triggers
WHERE event_object_table = 'film';

Kết quả ví dụ:

+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
| trigger_schema |     trigger_name      | event_manipulation |                                          action_statement                                          |
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
| public         | film_fulltext_trigger | INSERT             | EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description') |
| public         | film_fulltext_trigger | UPDATE             | EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description') |
| public         | last_updated          | UPDATE             | EXECUTE FUNCTION last_updated()                                                                    |
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+

Việc xem như chế độ xem chỉ trả về những trình kích hoạt mà người dùng hiện tại sở hữu hoặc có một số đặc quyền ngoài SELECT trên, danh sách kết quả chỉ có thể đại diện cho một tập hợp con các trình kích hoạt thực tế được xác định trên bảng.

pg_trigger Danh mục

pg_catalog.pg_trigger danh mục lưu trữ các trình kích hoạt trên các bảng và chế độ xem, và nó không giới hạn ở chỉ những trình kích hoạt mà người dùng hiện tại sở hữu hoặc có một số đặc quyền ngoài SELECT trên:

SELECT 
    tgname AS trigger_name
FROM 
    pg_trigger
WHERE
    tgrelid = 'public.film'::regclass
ORDER BY
    trigger_name;

Kết quả ví dụ:

+------------------------------+
|         trigger_name         |
+------------------------------+
| RI_ConstraintTrigger_a_24890 |
| RI_ConstraintTrigger_a_24891 |
| RI_ConstraintTrigger_a_24900 |
| RI_ConstraintTrigger_a_24901 |
| RI_ConstraintTrigger_a_24915 |
| RI_ConstraintTrigger_a_24916 |
| RI_ConstraintTrigger_c_24907 |
| RI_ConstraintTrigger_c_24908 |
| RI_ConstraintTrigger_c_24912 |
| RI_ConstraintTrigger_c_24913 |
| film_fulltext_trigger        |
| last_updated                 |
+------------------------------+

Để lấy nguồn, chúng tôi có thể bao gồm pg_proc xem trong truy vấn của chúng tôi:

SELECT 
    t.tgname,
    p.prosrc 
FROM 
    pg_trigger t JOIN pg_proc p ON p.oid = t.tgfoid
WHERE
    t.tgrelid = 'public.film'::regclass
ORDER BY
    t.tgname;

Kết quả ví dụ:

+------------------------------+------------------------------------------+
|            tgname            |                  prosrc                  |
+------------------------------+------------------------------------------+
| RI_ConstraintTrigger_a_24890 | RI_FKey_restrict_del                     |
| RI_ConstraintTrigger_a_24891 | RI_FKey_cascade_upd                      |
| RI_ConstraintTrigger_a_24900 | RI_FKey_restrict_del                     |
| RI_ConstraintTrigger_a_24901 | RI_FKey_cascade_upd                      |
| RI_ConstraintTrigger_a_24915 | RI_FKey_restrict_del                     |
| RI_ConstraintTrigger_a_24916 | RI_FKey_cascade_upd                      |
| RI_ConstraintTrigger_c_24907 | RI_FKey_check_ins                        |
| RI_ConstraintTrigger_c_24908 | RI_FKey_check_upd                        |
| RI_ConstraintTrigger_c_24912 | RI_FKey_check_ins                        |
| RI_ConstraintTrigger_c_24913 | RI_FKey_check_upd                        |
| film_fulltext_trigger        | tsvector_update_trigger_byid             |
| last_updated                 |                                         +|
|                              | BEGIN                                   +|
|                              |     NEW.last_update = CURRENT_TIMESTAMP;+|
|                              |     RETURN NEW;                         +|
|                              | END                                      |
+------------------------------+------------------------------------------+

Hãy nhớ rằng nội dung của pg_proc.prosrc cột phụ thuộc vào ngôn ngữ triển khai / quy ước gọi. Nó có thể chứa mã nguồn thực của hàm cho các ngôn ngữ được thông dịch, ký hiệu liên kết, tên tệp hoặc bất kỳ thứ gì khác.

\dS Lệnh

Khi sử dụng psql, \dS lệnh là một cách nhanh chóng để lấy thông tin về bảng, dạng xem, v.v., bao gồm bất kỳ trình kích hoạt nào được xác định dựa trên chúng.

Chúng ta có thể nối tên bảng vào lệnh này để trả về thông tin chỉ về bảng đó:

\dS film

Kết quả ví dụ:

+----------------------+-----------------------------+-----------+----------+---------------------------------------+
|        Column        |            Type             | Collation | Nullable |                Default                |
+----------------------+-----------------------------+-----------+----------+---------------------------------------+
| film_id              | integer                     |           | not null | nextval('film_film_id_seq'::regclass) |
| title                | character varying(255)      |           | not null |                                       |
| description          | text                        |           |          |                                       |
| release_year         | year                        |           |          |                                       |
| language_id          | smallint                    |           | not null |                                       |
| original_language_id | smallint                    |           |          |                                       |
| rental_duration      | smallint                    |           | not null | 3                                     |
| rental_rate          | numeric(4,2)                |           | not null | 4.99                                  |
| length               | smallint                    |           |          |                                       |
| replacement_cost     | numeric(5,2)                |           | not null | 19.99                                 |
| rating               | mpaa_rating                 |           |          | 'G'::mpaa_rating                      |
| last_update          | timestamp without time zone |           | not null | now()                                 |
| special_features     | text[]                      |           |          |                                       |
| fulltext             | tsvector                    |           | not null |                                       |
+----------------------+-----------------------------+-----------+----------+---------------------------------------+
Indexes:
    "film_pkey" PRIMARY KEY, btree (film_id)
    "film_fulltext_idx" gist (fulltext)
    "idx_fk_language_id" btree (language_id)
    "idx_fk_original_language_id" btree (original_language_id)
    "idx_title" btree (title)
Foreign-key constraints:
    "film_language_id_fkey" FOREIGN KEY (language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT
    "film_original_language_id_fkey" FOREIGN KEY (original_language_id) REFERENCES language(language_id) ON UPDATE CASCADE ON DELETE RESTRICT
Referenced by:
    TABLE "film_actor" CONSTRAINT "film_actor_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
    TABLE "film_category" CONSTRAINT "film_category_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
    TABLE "inventory" CONSTRAINT "inventory_film_id_fkey" FOREIGN KEY (film_id) REFERENCES film(film_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
    film_fulltext_trigger BEFORE INSERT OR UPDATE ON film FOR EACH ROW EXECUTE FUNCTION tsvector_update_trigger('fulltext', 'pg_catalog.english', 'title', 'description')
    last_updated BEFORE UPDATE ON film FOR EACH ROW EXECUTE FUNCTION last_updated()

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sắp xếp không chính xác PostgreSQL

  2. PostgreSQL:Loại dữ liệu nào nên được sử dụng cho Tiền tệ?

  3. psycopg2 không thực sự chèn dữ liệu

  4. Bản sao Londiste với PostgreSQL 9.0

  5. Trừ các tuần cho một ngày trong PostgreSQL