database - Mysql auto increment alternatives -


मेरे पास नीचे की तालिका है।

  तालिका mytable बनाएँ (physical_id int auto_increment, logical_id int , डेटा varchar (20), संस्करण_ प्रारंभ_डेटा datetime, version_end_date datetime, प्राथमिक कुंजी (physical_id), अद्वितीय कुंजी (लॉजिकल_आईडी, संस्करण_स्टार्ट_डेट, संस्करण_एंड_डेट));  

स्कीमा के पीछे का विचार है, मैं हर पंक्ति में संशोधन का ट्रैक रखना चाहता हूं और किसी खास दिनांक को version_start_date और version_end_date को चेक करके वैध पंक्ति प्राप्त करना चाहता हूं। मैं अपने लॉजिकल आईडी को ऑटो_इनराइमेंट करना चाहता हूं, लेकिन mysql केवल एक आईडी को ऑटो_इन्रिटमेंट के लिए अनुमति देता है।

इसलिए, मैं एक नई पंक्ति बनाते समय, physical_id को logical_id सेट करना चाहता हूं मैं ट्रिगर का उपयोग यह करने के लिए कर रहा हूँ।

  सीमांकक $$ प्रत्येक पंक्ति के लिए mytable पर डालने से पहले ट्रिगर myTrigger बनाने सेट शुरू new.logical_id = (information_schema.tables से auto_increment का चयन करें जहां TABLE_SCHEMA = डेटाबेस () और table_name = 'mytable'); अंत $ $ सीमांकक;  

मैंने देखा है कि कुछ अन्य विकल्प हैं, और

इन तरीकों के साथ समस्या है, मुझे एक नई अनुक्रम तालिका बनानी होगी और उस तालिका में रिकॉर्ड डालना होगा ।

क्या कोई बेहतर विकल्प है?

धन्यवाद बाला

  - अद्यतन  

मुझे यकीन नहीं है कि क्यों @ टीपीडीआई, मुझे माता-पिता की आवश्यकता क्यों है, जब मैं इसे नीचे की सारणी के साथ अनुकरण कर सकता हूं।

  टेबल लॉजिकल_आईडी_सेक बनाएं (लॉजिकल_आईड इंट_आकार, प्राथमिक कुंजी (तार्किक_आईडी)); तालिका mytable (physical_id पूर्णांक auto_increment, logical_id पूर्णांक नहीं अशक्त संदर्भ माता पिता (logical_id), डेटा varchar (20), version_start_date datetime रिक्त नहीं बनाते हैं, version_end_date datetime नहीं अशक्त, प्राथमिक कुंजी (physical_id), विदेशी कुंजी (logical_id) संदर्भ logical_id_seq (logical_id) , अद्वितीय कुंजी (लॉजिकल_आईडी, संस्करण_स्टार्ट_डेट, संस्करण_एंड_डेट));  

यही कारण है कि मैं MySQL के auto_increment और SQL सर्वर की पहचान करने के लिए ओरेकल / PostgreSQL दृश्यों पसंद करते हैं - आप इस के लिए कई दृश्यों परिभाषित करने में सक्षम होगा।

एक अतिरिक्त auto_increment के लिए auto_increment का उपयोग करने के एक स्तंभ के लिए पूरी तरह एक अलग तालिका बनाना सबसे अच्छा समाधान मैं के बारे में सोच सकते हैं, ट्रिगर के माध्यम से एक्सेस या संग्रहीत किया जाता है प्रक्रिया।


Comments

Popular posts from this blog

c# - sqlDecimal to decimal clr stored procedure Unable to cast object of type 'System.Data.SqlTypes.SqlDecimal' to type 'System.IConvertible' -

Calling GetGUIThreadInfo from Outlook VBA -

Obfuscating Python code? -