MySQL में किसी टेबल में संयुक्त प्राथमिक कुंजी (Composite Primary Key - एकाधिक कॉलम वाली PK) है या नहीं, यह जांचने के लिए INFORMATION_SCHEMA.KEY_COLUMN_USAGE टेबल को क्वेरी करें और कॉलम गिनें। यदि गिनती 1 से अधिक है, तो संयुक्त PK है।
सिंटैक्स
SELECT COUNT(*) AS Total FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'your_table_name' AND TABLE_SCHEMA = DATABASE() AND CONSTRAINT_NAME = 'PRIMARY';
व्यावहारिक उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE DemoTable1324 (
StudentId INT,
StudentName VARCHAR(20),
StudentAge INT,
StudentCountryName VARCHAR(20)
);
संयुक्त प्राथमिक कुंजी जोड़ें (3 कॉलम)
mysql> ALTER TABLE DemoTable1324
-> ADD CONSTRAINT constr_IdAgeCountry PRIMARY KEY (StudentId, StudentAge, StudentCountryName);
संयुक्त PK पहचानने की क्वेरी
mysql> SELECT COUNT(*) AS Total
-> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
-> WHERE TABLE_NAME = 'DemoTable1324'
-> AND TABLE_SCHEMA = DATABASE()
-> AND CONSTRAINT_NAME = 'PRIMARY';
परिणाम
+-------+ | Total | +-------+ | 3 | +-------+
परिणाम 3 दर्शाता है कि प्राथमिक कुंजी में 3 कॉलम हैं - यह एक **संयुक्त प्राथमिक कुंजी** है।
विस्तृत जानकारी प्राप्त करें
SELECT COLUMN_NAME, ORDINAL_POSITION FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'DemoTable1324' AND TABLE_SCHEMA = DATABASE() AND CONSTRAINT_NAME = 'PRIMARY' ORDER BY ORDINAL_POSITION;
+-------------------+------------------+ | COLUMN_NAME | ORDINAL_POSITION | +-------------------+------------------+ | StudentId | 1 | | StudentAge | 2 | | StudentCountryName| 3 | +-------------------+------------------+
सरल जांच: केवल TRUE/FALSE
SELECT COUNT(*) > 1 AS HasCompositePK FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = 'DemoTable1324' AND TABLE_SCHEMA = DATABASE() AND CONSTRAINT_NAME = 'PRIMARY';
अन्य उपयोगी INFORMATION_SCHEMA क्वेरी
सभी प्राथमिक कुंजियां सूचीबद्ध करें
SELECT TABLE_NAME, COUNT(*) AS PK_Columns FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND CONSTRAINT_NAME = 'PRIMARY' GROUP BY TABLE_NAME HAVING COUNT(*) > 1;
विदेशी कुंजी संबंध देखें
SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() AND REFERENCED_TABLE_NAME IS NOT NULL;
महत्वपूर्ण नोट्स
TABLE_SCHEMA = DATABASE()वर्तमान डेटाबेस तक सीमित करता हैCONSTRAINT_NAME = 'PRIMARY'केवल प्राथमिक कुंजी के लिए फ़िल्टर करता हैORDINAL_POSITIONPK में कॉलम का क्रम दिखाता है- यह विधि किसी भी स्टोरेज इंजन (InnoDB, MyISAM, आदि) के साथ काम करती है
उपयोग के मामले
- स्कीमा दस्तावेज़ीकरण/ऑडिट
- माइग्रेशन स्क्रिप्ट में सत्यापन
- डायनामिक SQL जनरेशन
- ORM/कोड जनरेशन टूल्स
INFORMATION_SCHEMA.KEY_COLUMN_USAGE MySQL मेटाडेटा का केंद्रीय स्रोत है जो प्रोग्रामेटिक स्कीमा निरीक्षण सक्षम करता है।