मैं बर्फ के टुकड़े में एक मेज पर सभी विदेशी-कुंजी बाधाओं को कैसे छोड़ सकता हूं। कुछ इस तरह

ALTER TABLE TABLE_NAME DROP ALL FOREIGN KEY

मुझे स्नोफ्लेक दस्तावेज़ीकरण में कोई स्क्रिप्ट नहीं मिली है। इस तरह एकल विदेशी कुंजी बाधा ड्रॉप स्क्रिप्ट है

ALTER TABLE TABLE_NAME DROP FOREIGN KEY(COLUMN_NAME)
1
Alamgir 17 नवम्बर 2020, 14:24

2 जवाब

सबसे बढ़िया उत्तर

यह एक एकल SQL कथन के भीतर संभव नहीं है। स्नोफ्लेक केवल गारंटी देता है कि "विदेशी कुंजी संदर्भों के साथ एक अद्वितीय/प्राथमिक कुंजी छोड़ना अद्वितीय/प्राथमिक कुंजी के साथ सभी संदर्भित विदेशी कुंजी को छोड़ देता है"

यहां देखें: https://docs.snowflake.com/en/sql -reference/constraints-drop.html

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

संग्रहीत कार्यविधियाँ बनाने के बारे में अधिक जानकारी: https://docs.snowflake.com /en/sql-reference/stored-procedures.html

जानकारी स्कीमा-व्यू जहां से आपको सभी बाधाएं मिलती हैं: https: //docs.snowflake.com/hi/sql-reference/info-schema/table_constraints.html

0
Marcel 17 नवम्बर 2020, 14:40

संरचना इस प्रकार होनी चाहिए:

ALTER TABLE "RETAIL_POC"."SALES"."STORE_LOOKUP" ADD CONSTRAINT "store_pk" PRIMARY KEY (STORE_ID);

ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" ADD CONSTRAINT "store_fk" FOREIGN KEY (STORE_ID) REFERENCES "RETAIL_POC"."SALES"."STORE_LOOKUP" (STORE_ID);

ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" DROP CONSTRAINT "store_fk";

आप कई स्तंभों के आधार पर बाधाओं को भी छोड़ सकते हैं:

ALTER TABLE "RETAIL_POC"."SALES"."STORE_TRANSACTIONS" DROP FOREIGN KEY (store_id);

प्रासंगिक दस्तावेज: डोपिंग प्रतिबंध

0
Daniel Zagales 17 नवम्बर 2020, 14:37