2008-12-18 9 views
7

मैं एक लेनदेन शुरू करता हूं, जो एक तालिका में कई रिकॉर्ड डालना है। क्या मैं लेनदेन करने से पहले डेटाबेस से नवीनतम डाला गया रिकॉर्ड चुन सकता हूं?, एक चयन के लेनदेन के भीतर एक सफल सफल हो सकता है?

उत्तर

14

हां।

एक सौदे के अंदर, आपके आवेदन सब कुछ देखता है।

कोई अन्य लेन-देन है, तथापि, परिवर्तन के किसी भी हिस्से को देखता है।

एक सौदे की बात एक दृश्य बनाने के लिए के बयानों डेटाबेस के लिए एक परमाणु परिवर्तन होना दिखाई है।

आप प्रतिबद्ध हैं, तो लेन-देन में सभी बयानों को अंतिम रूप दिया जाता है, और बाकी सब प्रभाव देख सकते हैं।

यदि आप रोलबैक, लेन-देन में कोई बयान को अंतिम रूप दिया गया है, और कोई परिवर्तन नहीं डेटाबेस के लिए होता है।

नहीं सभी बयानों एक सौदे का हिस्सा है, BTW हो सकता है। डीडीएल (उदाहरण के लिए बनाएं और ड्रॉप करें) किसी भी पिछले लेनदेन को समाप्त कर देगा।

4

हां, लेनदेन के दौरान या उसके बाद आप last_insert_rowid() फ़ंक्शन का उपयोग कर सकते हैं।

अंतिम_insert_rowid() फ़ंक्शन डेटाबेस कनेक्शन से डाली गई अंतिम पंक्ति के ROWID को देता है जिसने फ़ंक्शन को बुलाया।

दूसरे शब्दों में:

SQLite version 3.6.23 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 

sqlite> create table T (C); 
sqlite> insert into T values ('hello'); 
sqlite> select last_insert_rowid(); 
1 
sqlite> BEGIN; 
sqlite> insert into T values ('test 2'); 
sqlite> select last_insert_rowid(); 
2 
sqlite> select rowid,* from T; 
1|hello 
2|test 2 
sqlite> ROLLBACK; 
sqlite> select last_insert_rowid(); 
2 
sqlite> select rowid,* from T; 
1|hello 
sqlite> 
संबंधित मुद्दे