PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL में दी गई तालिका के लिए सभी ट्रिगर सूचीबद्ध करने के 3 तरीके

PostgreSQL में दी गई तालिका के लिए ट्रिगर्स को सूचीबद्ध करने के लिए यहां तीन विकल्प दिए गए हैं।

information_schema.triggers देखें

इस दृश्य में वर्तमान डेटाबेस में सभी कार्य और प्रक्रियाएं शामिल हैं जो वर्तमान उपयोगकर्ता के पास हैं या उनके पास SELECT के अलावा कुछ विशेषाधिकार हैं पर।

इस दृश्य में एक कॉलम है event_object_table , जिसमें उस तालिका का नाम होता है जिस पर ट्रिगर परिभाषित किया गया है।

इसलिए हम इस दृश्य का उपयोग इस तरह की विशिष्ट तालिका के लिए ट्रिगर प्राप्त करने के लिए कर सकते हैं:

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

उदाहरण परिणाम:

+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+
| 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()                                                                    |
+----------------+-----------------------+--------------------+----------------------------------------------------------------------------------------------------+

दृश्य के रूप में देखना केवल वे ट्रिगर लौटाता है जो वर्तमान उपयोगकर्ता के पास है या उसके पास SELECT के अलावा कुछ विशेषाधिकार है पर, परिणामी सूची तालिका पर परिभाषित वास्तविक ट्रिगर्स के केवल एक सबसेट का प्रतिनिधित्व कर सकती है।

pg_trigger कैटलॉग

pg_catalog.pg_trigger कैटलॉग स्टोर टेबल और दृश्यों पर ट्रिगर करता है, और यह केवल उन ट्रिगर्स तक सीमित नहीं है जो वर्तमान उपयोगकर्ता के पास है या उसके पास चुनें पर:

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

उदाहरण परिणाम:

+------------------------------+
|         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                 |
+------------------------------+

स्रोत प्राप्त करने के लिए, हम pg_proc . शामिल कर सकते हैं हमारी क्वेरी में देखें:

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;

उदाहरण परिणाम:

+------------------------------+------------------------------------------+
|            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                                      |
+------------------------------+------------------------------------------+

ध्यान रखें कि pg_proc.prosrc . की सामग्री कॉलम कार्यान्वयन भाषा/कॉल सम्मेलन पर निर्भर करता है। इसमें व्याख्या की गई भाषाओं के लिए फ़ंक्शन का वास्तविक स्रोत कोड, एक लिंक प्रतीक, एक फ़ाइल नाम, या बस कुछ और हो सकता है।

\dS कमांड

Psql का उपयोग करते समय, \dS कमांड टेबल, व्यू आदि के बारे में जानकारी प्राप्त करने का एक त्वरित तरीका है, जिसमें उनके खिलाफ परिभाषित कोई भी ट्रिगर शामिल है।

हम केवल उस तालिका के बारे में जानकारी वापस करने के लिए इस आदेश में तालिका का नाम जोड़ सकते हैं:

\dS film

उदाहरण परिणाम:

+----------------------+-----------------------------+-----------+----------+---------------------------------------+
|        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. PHP और पोस्टग्रेस:​​त्रुटियों को पकड़ना?

  2. मेरी पसंदीदा पोस्टग्रेएसक्यूएल क्वेरीज़ और वे क्यों मायने रखती हैं

  3. डेटाबेस को हटा नहीं सकता

  4. Psql में, कुछ कमांड का कोई प्रभाव क्यों नहीं पड़ता है?

  5. PostgreSQL का उपयोग करके पिछले 24 घंटों के रिकॉर्ड का चयन कैसे करें