मुझे पूरा यकीन है कि आप केवल on delete cascade
नहीं जोड़ सकते हैं मौजूदा विदेशी कुंजी बाधा के लिए। आपको पहले बाधा को छोड़ना होगा, फिर सही संस्करण जोड़ना होगा। मानक SQL में, मेरा मानना है कि ऐसा करने का सबसे आसान तरीका है
- लेन-देन शुरू करें,
- विदेशी कुंजी छोड़ें,
- एक विदेशी कुंजी जोड़ें
on delete cascade
, और अंत में - लेन-देन करें
प्रत्येक विदेशी कुंजी के लिए दोहराएं जिसे आप बदलना चाहते हैं।
लेकिन PostgreSQL में एक गैर-मानक एक्सटेंशन है जो आपको एकल SQL कथन में एकाधिक बाधा खंड का उपयोग करने देता है। उदाहरण के लिए
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
यदि आप उस विदेशी कुंजी बाधा का नाम नहीं जानते हैं जिसे आप छोड़ना चाहते हैं, तो आप या तो इसे pgAdminIII में देख सकते हैं (बस तालिका के नाम पर क्लिक करें और DDL देखें, या पदानुक्रम का विस्तार करें जब तक कि आप "बाधाएं" न देखें), या आप सूचना स्कीमा को क्वेरी कर सकते हैं।
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null