इसे स्वचालित करने के लिए, आप ON DELETE CASCADE
के साथ विदेशी कुंजी बाधा को परिभाषित कर सकते हैं .
मैं के लिए मैनुअल उद्धृत करता हूं विदेशी कुंजी बाधाएं
:
वर्तमान FK परिभाषा को इस तरह देखें:
SELECT pg_get_constraintdef(oid) AS constraint_def
FROM pg_constraint
WHERE conrelid = 'public.kontakty'::regclass -- assuming public schema
AND conname = 'kontakty_ibfk_1';
फिर ON DELETE ...
add जोड़ें या संशोधित करें ON DELETE CASCADE
. का भाग (बाकी सब कुछ वैसे ही सुरक्षित रखना) जैसे एक बयान में:
ALTER TABLE kontakty
DROP CONSTRAINT kontakty_ibfk_1
, ADD CONSTRAINT kontakty_ibfk_1
FOREIGN KEY (id_osoby) REFERENCES osoby (id_osoby) ON DELETE CASCADE;
कोई ALTER CONSTRAINT
नहीं है आज्ञा। एक ALTER TABLE
. में बाधा को छोड़ें और फिर से बनाएं समवर्ती लेखन पहुंच के साथ संभावित दौड़ स्थितियों से बचने के लिए कथन।
जाहिर है ऐसा करने के लिए आपको विशेषाधिकारों की आवश्यकता है। ऑपरेशन एक ACCESS EXCLUSIVE
लेता है टेबल पर लॉक करें kontakty
और एक SHARE ROW EXCLUSIVE
टेबल पर लॉक करें osoby
।
अगर आप ALTER
नहीं कर सकते हैं तालिका, फिर हाथ से हटाना (एक बार) या ट्रिगर द्वारा BEFORE DELETE
(हर बार) शेष विकल्प हैं।