たとえば、SQL Serverの場合だと次のような方法があります。

CREATE TABLE TABLENAME(ID INTEGER PRIMARY KEY,colmn1 nvarchar(10),colmn2 nvarchar(10));
BEGIN TRANSACTION
INSERT INTO TABLENAME(colmn1,colmn2) VALUES(DATA1,DATA2);
SELECT @@IDENTITY AS 'ident' // ここでIDを取得可能
COMMIT TRANSACTION

現在、SQLite3では、よくないなと感じながらも、方法の一つとして、次のように取得しています。

create table test(id integer primary key,test text);
BEGIN;
insert into test(test) values("Fooooooooooooooo");
select max(id) from test;
1
COMMIT;

本来、SQLite3では新規レコードのIDを取得するには、どのように取得することが正しいのでしょうか?