1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Do not record the inserted rowid on when doing an INSERT within a trigger.

Ticket #290. (CVS 906)

FossilOrigin-Name: 96a717661a3b7108fe0cacb588d81fd8e91eb640
This commit is contained in:
drh
2003-04-15 14:01:43 +00:00
parent f9a2e7bb8d
commit 49449834fc
4 changed files with 69 additions and 13 deletions

View File

@ -12,7 +12,7 @@
# focus of this file is testing the magic ROWID column that is
# found on all tables.
#
# $Id: rowid.test,v 1.8 2002/02/19 22:42:06 drh Exp $
# $Id: rowid.test,v 1.9 2003/04/15 14:01:44 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -353,4 +353,57 @@ do_test rowid-7.8 {
}
} {2 66 3 111}
# Make sure AFTER triggers that do INSERTs do not change the last_insert_rowid.
# Ticket #290
#
do_test rowid-8.1 {
execsql {
CREATE TABLE t3(a integer primary key);
CREATE TABLE t4(x);
INSERT INTO t4 VALUES(1);
CREATE TRIGGER r3 AFTER INSERT on t3 FOR EACH ROW BEGIN
INSERT INTO t4 VALUES(NEW.a+10);
END;
SELECT * FROM t3;
}
} {}
do_test rowid-8.2 {
execsql {
SELECT rowid, * FROM t4;
}
} {1 1}
do_test rowid-8.3 {
execsql {
INSERT INTO t3 VALUES(123);
SELECT last_insert_rowid();
}
} {123}
do_test rowid-8.4 {
execsql {
SELECT * FROM t3;
}
} {123}
do_test rowid-8.5 {
execsql {
SELECT rowid, * FROM t4;
}
} {1 1 2 133}
do_test rowid-8.6 {
execsql {
INSERT INTO t3 VALUES(NULL);
SELECT last_insert_rowid();
}
} {124}
do_test rowid-8.7 {
execsql {
SELECT * FROM t3;
}
} {123 124}
do_test rowid-8.8 {
execsql {
SELECT rowid, * FROM t4;
}
} {1 1 2 133 3 {}}
finish_test