diff options
author | drh <> | 2021-01-30 02:22:38 +0000 |
---|---|---|
committer | drh <> | 2021-01-30 02:22:38 +0000 |
commit | 16d861ffc27142a17e4e888d8ff57280e3ac754c (patch) | |
tree | a2a1fb0a8b4ca18431eb380af2fab2dd40d01536 /src | |
parent | ba71a8a01bf2559eefe526e3b44f07e9ff2da5b8 (diff) | |
download | sqlite-16d861ffc27142a17e4e888d8ff57280e3ac754c.tar.gz sqlite-16d861ffc27142a17e4e888d8ff57280e3ac754c.zip |
When running the RETURNING trigger, if it is tagged as a DELETE trigger,
do not use it as INSERT or UPDATE.
FossilOrigin-Name: 3c7a6e04ddde34961d8e9d0443913e572a80853cf14a8263cec19523c39ca744
Diffstat (limited to 'src')
-rw-r--r-- | src/trigger.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/trigger.c b/src/trigger.c index baf78eb8c..6a3498c45 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -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) ){ |