2012-12-07 9 views
12

मैं अगर एक कॉलम ऑटो वेतन वृद्धि की जाँच करने के लिए एक क्वेरी चलाने के लिए कोशिश कर रहा हूँ। मैं टाइप, डिफॉल्ट वैल्यू की जांच कर सकता हूं, अगर यह शून्य है या नहीं, लेकिन मैं यह नहीं समझ सकता कि यह स्वचालित वृद्धि के साथ परीक्षण कैसे किया जाए।एसक्यूएल - देखें कि क्या एक स्तंभ ऑटो वेतन वृद्धि

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'my_table' 
AND COLUMN_NAME = 'my_column' 
AND DATA_TYPE = 'int' 
AND COLUMN_DEFAULT IS NULL 
AND IS_NULLABLE = 'NO' 
--AND AUTO_INCREMENTS = 'YES' 

दुर्भाग्य से उनकी तुलना करना नहीं AUTO_INCREMENTS स्तंभ है: यहाँ मैं कैसे उन अन्य बातों के लिए परीक्षण कर रहा हूँ। तो यदि कॉलम ऑटो बढ़ता है तो मैं परीक्षण कैसे कर सकता हूं?

+0

कौन सा डीबीएमएस प्रयोग कर रहे हैं क्या देख रहा है? PostgreSQL? एस क्यू एल सर्वर? माई एसक्यूएल? –

+0

@a_horse_with_no_name - SQL सर्वर और MySQL। – Aust

+0

'शो बनाने टेबल my_table' – jchapa

उत्तर

36

MySQL के लिए, EXTRA स्तंभ में जाँच करें:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'my_table' 
    AND COLUMN_NAME = 'my_column' 
    AND DATA_TYPE = 'int' 
    AND COLUMN_DEFAULT IS NULL 
    AND IS_NULLABLE = 'NO' 
    AND EXTRA like '%auto_increment%' 

Sql सर्वर के लिए, sys.columns और is_identity स्तंभ का उपयोग करें: select COLUMN_NAME, TABLE_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_SCHEMA = 'dbo' and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 order by TABLE_NAME

7

MySQL मानते हुए, EXTRA स्तंभ को इंगित करेगा कि क्या यह AUTO_INCREMENT है।

| TABLE_CATALOG | TABLE_SCHEMA | ... |   EXTRA | ... | 
------------------------------------------------------------- 
|   def | db_2_00314 | ... | auto_increment | ... |

और MSSQL, see here के लिए।

0

इस एसक्यूएल सर्वर के लिए काम करता है चलाएं: 'table_name' का वर्णन करें; स्तंभ अतिरिक्त में आप के लिए

+0

तुम ऐसा कैसे अनुरोधकर्ता की समस्या को हल करने से काम करता है पर विस्तार कर सकते हैं? –

+0

मैं थोड़ा दिनांकित सवाल पता है, लेकिन किसी को भी ऐतिहासिक दृष्टि से देख रही है और सोच के लिए, मैं पुष्टि कर सकता है कि इस समाधान काम करता है आप sys स्कीमा का उपयोग नहीं करना चाहते हैं। – Raiden616

3

:

SELECT 
    is_identity 
FROM sys.columns 
WHERE 
    object_id = object_id('my_table') 
    AND name = 'my_column'