diff options
author | rdc <rdc@noemail.net> | 2004-02-20 22:53:38 +0000 |
---|---|---|
committer | rdc <rdc@noemail.net> | 2004-02-20 22:53:38 +0000 |
commit | b0c374ffbb7bcc4e590b69233e1b994fa296abf4 (patch) | |
tree | 621c4acc2bca8fbf8b93883fcb6b87109728346e /src/insert.c | |
parent | fcabd4641e1a273de8ddadce87e2097148bb8a26 (diff) | |
download | sqlite-b0c374ffbb7bcc4e590b69233e1b994fa296abf4.tar.gz sqlite-b0c374ffbb7bcc4e590b69233e1b994fa296abf4.zip |
Fixed behaviour of last_insert_rowid() with triggers and add last_statement_change_count() function that works correctly with triggers. (CVS 1251)
FossilOrigin-Name: 3383413a53bff0fef0765144de3bb9a298a5bb5c
Diffstat (limited to 'src/insert.c')
-rw-r--r-- | src/insert.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/insert.c b/src/insert.c index ba02810fd..679502e65 100644 --- a/src/insert.c +++ b/src/insert.c @@ -12,7 +12,7 @@ ** This file contains C code routines that are called by the parser ** to handle INSERT statements in SQLite. ** -** $Id: insert.c,v 1.91 2004/02/16 03:44:02 drh Exp $ +** $Id: insert.c,v 1.92 2004/02/20 22:53:39 rdc Exp $ */ #include "sqliteInt.h" @@ -535,6 +535,7 @@ void sqliteInsert( } } + sqliteVdbeAddOp(v, OP_SetCounts, 0, 0); sqliteEndWriteOperation(pParse); /* @@ -906,7 +907,9 @@ void sqliteCompleteInsertion( sqliteVdbeAddOp(v, OP_Dup, 1, 0); sqliteVdbeAddOp(v, OP_PutIntKey, newIdx, 0); } - sqliteVdbeAddOp(v, OP_PutIntKey, base, pParse->trigStack?0:1); + sqliteVdbeAddOp(v, OP_PutIntKey, base, + (pParse->trigStack?0:OPFLAG_NCHANGE) | + (isUpdate?0:OPFLAG_LASTROWID) | OPFLAG_CSCHANGE); if( isUpdate && recnoChng ){ sqliteVdbeAddOp(v, OP_Pop, 1, 0); } |