2011-10-18 8 views
5

PostgreSQL 8.x में चलाता निष्क्रिय करने के लिए मैं कुछ ऐसा कार्य करें:PostgreSQL 9 में ट्रिगर्स को कैसे अक्षम करें?

my_database=> ALTER TABLE my_table DISABLE TRIGGER ALL; 
ERROR: permission denied: "RI_ConstraintTrigger_25366" is a system trigger 

पुनश्च::

ALTER TABLE table DISABLE TRIGGER ALL; 

जब मैं इस PostgreSQL 9 में मैं निम्नलिखित मिलता है इस तालिका में उपयोगकर्ता द्वारा बनाया गया था यह इस आदेश को चला रहा है।

इस पर कोई संकेत?

उत्तर

9

कुछ ट्रिगर स्वचालित रूप से बाधाओं को लागू करने के लिए जोड़े जाते हैं, और जब तक आप एक सुपरसियर नहीं होते हैं तब तक उन्हें अक्षम नहीं किया जा सकता है। यदि आप केवल आपके द्वारा जोड़े गए सामान्य ट्रिगर्स को अक्षम करना चाहते हैं तो यह करें:

ALTER TABLE table DISABLE TRIGGER USER; 
+0

@ एंड्रे: यह व्यवहार पीजी ** 8.1 ** के बाद से ही था। (और 'तालिका तालिका को सक्षम करने के लिए' ट्रिगर उपयोगकर्ता को सक्षम न करें; 'बाद में, बीटीडब्ल्यू।) –

+0

हाय, उत्तर के लिए धन्यवाद। अगर मैं पोस्टग्रेस उपयोगकर्ता के साथ "ट्रिगर ऑल" करता हूं तो मैं केवल तभी अक्षम कर सकता हूं, "ट्रिगर उपयोगकर्ता" ट्रिगर्स को अक्षम नहीं करता है। –

+5

वैसे यह बाधा ट्रिगर संख्या को अक्षम नहीं करेगा, क्योंकि तब आपकी बाधाओं को लागू नहीं किया जाएगा। यदि आप उनको अक्षम करना चाहते हैं तो आपको एक सुपरसियर होना होगा। – TomH

संबंधित मुद्दे