diff options
Diffstat (limited to 'src/delete.c')
-rw-r--r-- | src/delete.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/delete.c b/src/delete.c index bd7ac3d1f..c7a686a8b 100644 --- a/src/delete.c +++ b/src/delete.c @@ -531,13 +531,18 @@ void sqlite3GenerateRowDelete( /* Delete the index and table entries. Skip this step if pTab is really ** a view (in which case the only effect of the DELETE statement is to - ** fire the INSTEAD OF triggers). */ + ** fire the INSTEAD OF triggers). + ** + ** If variable 'count' is non-zero, then this OP_Delete instruction should + ** invoke the update-hook. The pre-update-hook, on the other hand should + ** be invoked unless table pTab is a system table. The difference is that + ** the update-hook is not invoked for rows removed by REPLACE, but the + ** pre-update-hook is. + */ if( pTab->pSelect==0 ){ sqlite3GenerateRowIndexDelete(pParse, pTab, iCur, 0); sqlite3VdbeAddOp2(v, OP_Delete, iCur, (count?OPFLAG_NCHANGE:0)); - if( count ){ - sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC); - } + sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_STATIC); } /* Do any ON CASCADE, SET NULL or SET DEFAULT operations required to |