aboutsummaryrefslogtreecommitdiff
path: root/src/trigger.c
diff options
context:
space:
mode:
authordrh <>2021-01-30 02:22:38 +0000
committerdrh <>2021-01-30 02:22:38 +0000
commit16d861ffc27142a17e4e888d8ff57280e3ac754c (patch)
treea2a1fb0a8b4ca18431eb380af2fab2dd40d01536 /src/trigger.c
parentba71a8a01bf2559eefe526e3b44f07e9ff2da5b8 (diff)
downloadsqlite-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/trigger.c')
-rw-r--r--src/trigger.c4
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)
){