Bir tabloya çeşitli kayıtlar eklemek olan bir işlem başlatıyorum. İşlem yapılmadan önce veritabanına en son eklenen kaydı seçebilir miyim?, bir ekleme işleminde başarılı bir seçim yapabilir miyim?
cevap
Evet.
Bir işlemin içinde uygulamanız her şeyi görür. Bununla birlikte, başka hiçbir işlem değişikliğin hiçbir bölümünü görmez.
Bir işlemin noktası, bir dizi ifadenin veritabanında bir atomik değişiklik olarak görünmesidir.
Yaparsanız, işlemdeki tüm ifadeler kesinleştirilir ve diğer herkes etkilerini görebilir.
Geri alma yaparsanız, işlemdeki hiçbir ifade sonlandırılmaz ve veritabanında herhangi bir değişiklik olmaz.
Tüm bildirimler BTW bir işlemin parçası olamaz. DDL (Örneğin Oluşturma ve Bırakma) önceki işlemleri sonlandıracaktır.
Evet, işlem sırasında veya sonrasında last_insert_rowid() işlevini kullanabilirsiniz.
last_insert_rowid() işlevi, işlevi çağrılan veritabanı bağlantısından eklenen son satırın ROWID değerini döndürür. Başka bir deyişle
:
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>