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

SQL सर्वर में ट्रिगर इवेंट प्रकारों को सूचीबद्ध करने के लिए sys.trigger_event_types का उपयोग करें

SQL सर्वर में, आप sys.trigger_event_types . का उपयोग कर सकते हैं उन सभी ईवेंट या ईवेंट समूहों को वापस करने के लिए जिन पर ट्रिगर सक्रिय हो सकता है।

उदाहरण 1 - एक छोटा सा नमूना

यहां, मैं TOP() का उपयोग करता हूं दृश्य से पहली दस पंक्तियों को वापस करने के लिए खंड।

SELECT TOP(10) * 
FROM sys.trigger_event_types;

परिणाम:

+--------+-------------------+---------------+
| type   | type_name         | parent_type   |
|--------+-------------------+---------------|
| 21     | CREATE_TABLE      | 10018         |
| 22     | ALTER_TABLE       | 10018         |
| 23     | DROP_TABLE        | 10018         |
| 24     | CREATE_INDEX      | 10020         |
| 25     | ALTER_INDEX       | 10020         |
| 26     | DROP_INDEX        | 10020         |
| 27     | CREATE_STATISTICS | 10021         |
| 28     | UPDATE_STATISTICS | 10021         |
| 29     | DROP_STATISTICS   | 10021         |
| 34     | CREATE_SYNONYM    | 10022         |
+--------+-------------------+---------------+

यदि मैं सभी पंक्तियों का चयन करता हूं, तो SQL सर्वर 2017 में 284 और SQL सर्वर 2019 में 291 का उपयोग करते समय मुझे 284 मिलते हैं।

उदाहरण 2 - जनक प्राप्त करना

यदि आप sys.trigger_event_types . के परिणामों को करीब से देखें तो , आप देखेंगे कि डीडीएल ट्रिगर इवेंट पदानुक्रमित हैं।

यहां एक उदाहरण दिया गया है जो CREATE_TABLE . के पदानुक्रम को दर्शाता है ट्रिगर घटना।

WITH event_types(Type, Type_Name, Parent_Type, Level) AS (
    SELECT type,
           type_name,
           parent_type, 
           1 AS level
    FROM sys.trigger_event_types
    WHERE type_name = 'CREATE_TABLE'

    UNION ALL

    SELECT tet.type,
           tet.type_name,
           tet.parent_type, 
           et.level + 1 AS level
    FROM event_types AS et
    JOIN sys.trigger_event_types AS tet
        ON et.parent_type = tet.type
)

SELECT 
  Type,
  Type_name,
  Parent_Type
FROM event_types
ORDER BY level DESC;

परिणाम:

+--------+---------------------------+---------------+
| Type   | Type_name                 | Parent_Type   |
|--------+---------------------------+---------------|
| 10001  | DDL_EVENTS                | NULL          |
| 10016  | DDL_DATABASE_LEVEL_EVENTS | 10001         |
| 10017  | DDL_TABLE_VIEW_EVENTS     | 10016         |
| 10018  | DDL_TABLE_EVENTS          | 10017         |
| 21     | CREATE_TABLE              | 10018         |
+--------+---------------------------+---------------+

हम देख सकते हैं कि DDL_EVENTS पदानुक्रम के शीर्ष पर है, उसके बाद DDL_DATABASE_LEVEL_EVENTS है , आदि, जब तक हम CREATE_TABLE . तक नहीं पहुंच जाते ।

इसकी कल्पना करने का दूसरा तरीका इस प्रकार है:

DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE

आप CREATE_TABLE . को बदल सकते हैं किसी अन्य प्रकार के ईवेंट के साथ क्वेरी में उसका पदानुक्रम देखने के लिए।

यह भी देखें कि ट्रिगर इवेंट प्रकारों की एक पदानुक्रमित सूची वापस करने के लिए SQL सर्वर में ट्रिगर इवेंट प्रकारों की एक पदानुक्रमित सूची देता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में तालिका चर का प्रदर्शन

  2. SQL सर्वर में डेटा प्रकार का नाम प्राप्त करने के लिए TYPE_NAME() का उपयोग करें

  3. कनेक्शन बंद होने पर एक अनकमिटेड ट्रांजैक्शन का क्या होता है?

  4. मैं ASP.NET और SQL सर्वर के बीच कनेक्शन पूल समस्या को कैसे हल कर सकता हूं?

  5. सीओटी () SQL सर्वर में उदाहरण