sqlite_last_insert_rowid

SQLiteDatabase->lastInsertRowid

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_last_insert_rowid -- SQLiteDatabase->lastInsertRowidSon yerleştirilen satırın satır kimliğini döndürür

Açıklama

sqlite_last_insert_rowid ( resource $db ) : int

Nesne yönelimli kullanım

lastInsertRowid ( void ) : int

db veritabanına son yerleştirilen satır oluşturulabilmişse ve özdevinimli artan bir alana sahipse satırın satır kimliğini döndürür.

İpucu

Özdevinimli artan alanları SQLite'da oluşturabilmek için tablo şemanızda bu alanları INTEGER PRIMARY KEY olarak bildirmeniz gerekir.

Değiştirgeler

db

SQLite Veritabanı özkaynağı. Yordamsal kullanımda sqlite_open() işlevi tarafından döndürülür. Nesne yönelimli kullanımda bu değiştirgeye gerek yoktur.

Dönen Değerler

Satır kimliğini bir tamsayı olarak döndürür.

add a note add a note

User Contributed Notes 3 notes

up
1
Anonymous
18 years ago
Note that you don't need to create a primary key for your table. In the absence of an integer primary key, SQLite simply uses an internal key called "RowID" or "OID".
It has all of the features of a normal integer primary key(auto-incrementing, returned by sqlite_last_insert_rowid(), accessible via SELECT, etc), except that it's handled better by SQLite and doesn't require the extra characters in the "CREATE" command.
If you just want a primary key as an auto-incrementing ID for your rows, save yourself the trouble and just use "OID" instead.

Also, according to the SQLite website, the id returned is for the last insert in the current *connection*, not just database. This means that if there are two connections to the same database at the same time, and both perform "INSERT", each can get it's own inserted rowid later, so basically this is thread-safe(So long as no-one calls "REINDEX").
up
1
ffoeg at shaw dot ca
18 years ago
Note that if you insret a few rows in your table, say rowid 1-5, and then delete 2,3 and 4, you will be left with the rowids 1 and 5, not 1 and 2. This may seem basic to anyone with database experience, but I had to check it out with a GUI tool before I figured this one out. Anyway, what it boils down to is that sometimes your rowid will be greater than the number returned by the SQLite COUNT (*) function.
up
-1
David
19 years ago
I have noticed that this will still return an insert id even if a table has not been assigned a primary key or has not been assigned a primary key correctly. If the table was not created correctly sqlite_last_insert_rowid() will return its internal row id, which is probably not what you want. The correct way to establish a primary key migh look something like this look something like this:

create table some_table (id INTEGER PRIMARY KEY, some_field varchar(10))

Then you can try:

insert into some_table (some_field) values ('bob')

You will see that an id will be automatically generated and
calling sqlite_last_insert_rowid() will return the expected value
To Top