diff options
author | drh <drh@noemail.net> | 2006-09-11 23:45:48 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2006-09-11 23:45:48 +0000 |
commit | fdd48a76a6446da07aa5b9471485211ae87f1a1f (patch) | |
tree | 03fceb758bd53c7b20086ed8ed7d9b8f8568383a /src/trigger.c | |
parent | 4240240f1218a304ddc14e76d321ff0529a9491e (diff) | |
download | sqlite-fdd48a76a6446da07aa5b9471485211ae87f1a1f.tar.gz sqlite-fdd48a76a6446da07aa5b9471485211ae87f1a1f.zip |
Add support for IF EXISTS on CREATE/DROP TRIGGER/VIEW. Ticket #1899. (CVS 3406)
FossilOrigin-Name: e4fe736cfbbdc081581911a01690576034877b72
Diffstat (limited to 'src/trigger.c')
-rw-r--r-- | src/trigger.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/trigger.c b/src/trigger.c index 15992df38..efff8b833 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -49,7 +49,8 @@ void sqlite3BeginTrigger( SrcList *pTableName,/* The name of the table/view the trigger applies to */ int foreach, /* One of TK_ROW or TK_STATEMENT */ Expr *pWhen, /* WHEN clause */ - int isTemp /* True if the TEMPORARY keyword is present */ + int isTemp, /* True if the TEMPORARY keyword is present */ + int noErr /* Suppress errors if the trigger already exists */ ){ Trigger *pTrigger = 0; Table *pTab; @@ -115,7 +116,9 @@ void sqlite3BeginTrigger( goto trigger_cleanup; } if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash), zName,strlen(zName)) ){ - sqlite3ErrorMsg(pParse, "trigger %T already exists", pName); + if( !noErr ){ + sqlite3ErrorMsg(pParse, "trigger %T already exists", pName); + } goto trigger_cleanup; } @@ -439,7 +442,7 @@ void sqlite3DeleteTrigger(Trigger *pTrigger){ ** same job as this routine except it takes a pointer to the trigger ** instead of the trigger name. **/ -void sqlite3DropTrigger(Parse *pParse, SrcList *pName){ +void sqlite3DropTrigger(Parse *pParse, SrcList *pName, int noErr){ Trigger *pTrigger = 0; int i; const char *zDb; @@ -463,7 +466,9 @@ void sqlite3DropTrigger(Parse *pParse, SrcList *pName){ if( pTrigger ) break; } if( !pTrigger ){ - sqlite3ErrorMsg(pParse, "no such trigger: %S", pName, 0); + if( !noErr ){ + sqlite3ErrorMsg(pParse, "no such trigger: %S", pName, 0); + } goto drop_trigger_cleanup; } sqlite3DropTriggerPtr(pParse, pTrigger); |