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

Postgres ईवेंट ट्रिगर से SQL टेक्स्ट कैसे प्राप्त करें

PostgreSQL 9.5 से प्रारंभ होकर, pg_event_trigger_ddl_commands() कार्य करें ddl_command_end के लिए उपलब्ध है घटना ट्रिगर। TAG का उपयोग करना फ़िल्टर, इसका उपयोग किसी भी परिवर्तित तालिका को संसाधित करने के लिए किया जा सकता है। object_identity (या objid ) का उपयोग यह जानने की मूल समस्या को हल करने के लिए किया जा सकता है कि कौन सी तालिका बदली गई है। जहाँ तक पूर्ण कमांड प्राप्त करने की बात है, यह भी उपलब्ध है, लेकिन यह एक आंतरिक प्रकार का है pg_ddl_command

CREATE TABLE t (n INT);

CREATE FUNCTION notice_event() RETURNS event_trigger AS $$
DECLARE r RECORD;
BEGIN
    FOR r IN SELECT * FROM pg_event_trigger_ddl_commands() LOOP
        RAISE NOTICE 'caught % event on %', r.command_tag, r.object_identity;
    END LOOP;
END;
$$
LANGUAGE plpgsql;

CREATE EVENT TRIGGER tr_notice_alter_table
  ON ddl_command_end WHEN TAG IN ('ALTER TABLE')
  EXECUTE PROCEDURE notice_event();

ALTER TABLE t ADD c CHAR;

आउटपुट:NOTICE: caught ALTER TABLE event on public.t




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में डेटाबेस और टेबल्स को कैसे लिस्ट करें

  2. मांग पर पोस्टग्रेएसक्यूएल अनामीकरण

  3. मैं एक अलग स्कीमा के साथ डेटाबेस को पुनर्स्थापित करना चाहता हूं

  4. पोस्टग्रेएसक्यूएल में कम से कम () फ़ंक्शन

  5. psql के लिए वैकल्पिक आउटपुट स्वरूप