इस पर अमल नहीं करता है:आप प्राथमिक कुंजी के रूप में SQLite ROWID का उपयोग क्यों नहीं कर सकते?
create table TestTable (name text, age integer, primary key (ROWID))
त्रुटि संदेश है:
11-23 11: 05: ०५.२९८: त्रुटि/डाटाबेस (31,335): विफल 1 (तालिका TestTable कोई स्तंभ नामक ROWID) 0x2ab378 पर 'तालिका तालिका टेस्टटेबल (नाम टेक्स्ट, आयु पूर्णांक, प्राथमिक कुंजी (ROWID)) तैयार करते समय तैयार करें।
हालांकि, बाद TestTable बनाई गई है, यह तैयार करता है और ठीक कार्यान्वित:
create table TestTable (name text, age integer);
insert into TestTable (name, age) values ('Styler', 27);
select * from TestTable where ROWID=1;
मैं संभवतः एक स्वत: वेतन वृद्धि प्राथमिक कुंजी और विदेशी कुंजी है जो जरूरत के लिए एक समाधान के रूप में देख सकते हैं ROWID
एप्लिकेशन परत पर डेटा के रूप में आबादी के रूप में कभी भी इस्तेमाल नहीं किया जा रहा है। चूंकि ROWID
select
डिफ़ॉल्ट रूप से परिणाम सेट से छिपा हुआ है, इसलिए इसे एप्लिकेशन कुंजी से छुपाते हुए प्राथमिक कुंजी के साथ संबद्ध करना अच्छा होता। OracleBlog: ROWNUM and ROWID कहता है कि यह असंभव और अव्यवस्थित है, लेकिन इसके अलावा अधिक स्पष्टीकरण प्रदान नहीं करता है।
तो, 'यह संभव है' का उत्तर निश्चित रूप से कोई नहीं/अव्यवस्थित है, सवाल कम या ज्यादा 'क्यों नहीं' है?
रिकॉर्ड अपडेट होने पर ROWNUM बदलता है, ROWID आपके सॉर्ट सेट के क्रम या क्रम के आधार पर परिवर्तन करता है। तो रोवनम खराब है क्योंकि जब भी मास्टर में बदलाव किया जाता है तो आप सभी विदेशी कुंजी अपडेट करते हैं। (ओवरहेड के बहुत सारे) और ROWID खराब है क्योंकि आईडी सेट तब तक मौजूद नहीं है जब तक परिणाम सेट नहीं बनाया जाता है और आदेश दिया जाता है। यदि यह अस्तित्व में नहीं है, तो आप इसमें शामिल नहीं हो सकते हैं। – xQbert
@xQbert अगर ROWID को प्राथमिक कुंजी द्वारा संदर्भित किया जा रहा है, तो परिणाम सेट में कॉलम के क्रम के आधार पर यह कैसे बदल जाएगा? – styler1972
आपकी तालिका में ROWID मौजूद नहीं है testtable का वर्णन करें। आप देखेंगे कि ROWID नहीं है। ROWID एक सिस्टम कॉलम और सिस्टम बनाए रखा मूल्य है। आपके पास सिस्टम कॉलम पर पीके नहीं हो सकता है; आपके पास ऐसा करने की अनुमति नहीं है। उपरोक्त के बारे में: मेरे पास यह पीछे है; ROWID अपडेट बनाम ROWNUM के आधार पर बदल सकता है जो कि कहां चयन के आधार पर बदलता है। – xQbert