1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-05 15:55:57 +03:00

When running the RETURNING trigger, if it is tagged as a DELETE trigger,

do not use it as INSERT or UPDATE.

FossilOrigin-Name: 3c7a6e04ddde34961d8e9d0443913e572a80853cf14a8263cec19523c39ca744
This commit is contained in:
drh
2021-01-30 02:22:38 +00:00
parent ba71a8a01b
commit 16d861ffc2
3 changed files with 9 additions and 9 deletions

View File

@@ -740,7 +740,7 @@ Trigger *sqlite3TriggersExist(
for(p=pList; p; p=p->pNext){
if( p->op==op && checkColumnOverlap(p->pColumns, pChanges) ){
mask |= p->tr_tm;
}else if( p->bReturning ){
}else if( p->bReturning && (p->op==TK_RETURNING || p->op!=TK_DELETE) ){
p->op = op;
mask |= TRIGGER_AFTER;
}
@@ -1217,7 +1217,7 @@ void sqlite3CodeRowTrigger(
|| p->pSchema==pParse->db->aDb[1].pSchema );
/* Determine whether we should code this trigger */
if( (p->op==op || p->bReturning)
if( (p->op==op || (p->bReturning && p->op!=TK_DELETE))
&& p->tr_tm==tr_tm
&& checkColumnOverlap(p->pColumns, pChanges)
){