2012-07-10 12 views
6

तरल पदार्थ के लिए दस्तावेज़ों को देखते हुए और add-foreign-key-constraint डिफ्रैबल नामक एक संपत्ति है। लेकिन दस्तावेज़ वास्तव में उल्लेख नहीं करते कि वह संपत्ति क्या करती है। किसी को पता है?लिक्विबेस ऐड-विदेशी-की-बाधा डिफ्रैबल: इसका क्या अर्थ है?

उत्तर

10

DEFERRABLE
नहीं DEFERRABLE
यह नियंत्रित करता है कि क्या बाधा टाल जा सकता है। एक बाधा जो स्थगित नहीं है, प्रत्येक आदेश के तुरंत बाद जांच की जाएगी। स्थगित होने वाली बाधाओं की जांच लेनदेन के अंत तक (SET CONSTRAINTS कमांड का उपयोग करके) स्थगित कर दी जा सकती है। डिफ्रैबल डिफ़ॉल्ट नहीं है। वर्तमान में केवल विदेशी कुंजी बाधाएं इस खंड को स्वीकार करती हैं। अन्य सभी बाधा प्रकार deferrable नहीं हैं।

[स्रोत] http://www.postgresql.org/docs/8.1/static/sql-createtable.html

संक्षेप में, मान दो तालिकाओं चक्रीय FK निर्भरता है। जब हम डेटा के लिए सम्मिलित करते हैं जो संदर्भ तालिका दोनों तालिकाओं में मौजूद नहीं है और एफके बाधा स्थगित नहीं होती है, तो डीबी त्रुटि फेंक देगा क्योंकि एफके बाधा का उल्लंघन होता है। यदि स्थगित कर दिया गया है, तो लेनदेन करने के समय सत्यापन किया जाएगा।

+0

यही मैंने सोचा था। इसे क्लीयर करने के लिए शुक्रिया। – Gregg

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