diff --git a/doc/WhatsNew b/doc/WhatsNew index ce185a0977..9ad43ebd9e 100644 --- a/doc/WhatsNew +++ b/doc/WhatsNew @@ -4,6 +4,8 @@ * Feature CORE-645 and CORE-745 Database triggers + See also: + /doc/sql.extensions/README.db_triggers.txt Contributor(s): Adriano dos Santos Fernandes diff --git a/doc/sql.extensions/README.db_triggers.txt b/doc/sql.extensions/README.db_triggers.txt new file mode 100644 index 0000000000..b831aea90d --- /dev/null +++ b/doc/sql.extensions/README.db_triggers.txt @@ -0,0 +1,57 @@ +------------------ +Database triggers +------------------ + +Author: + Adriano dos Santos Fernandes + +Syntax: + ::= + {CREATE | RECREATE | CREATE OR ALTER} + TRIGGER + [ACTIVE | INACTIVE] + ON + [POSITION ] + AS + BEGIN + ... + END + + ::= + CONNECT + | DISCONNECT + | TRANSACTION START + | TRANSACTION COMMIT + | TRANSACTION ROLLBACK + +Syntax rules: + 1) Database triggers type can't be changed. + +Events descriptions: + +- CONNECT + Database connection established + A transaction is started + Triggers are fired - uncaught exceptions rollbacks the transaction, +disconnect the attachment and are returned to the client + The transaction is committed + +- DISCONNECT + A transaction is started + Triggers are fired - uncaught exceptions rollbacks the transaction, +disconnect the attachment and are swalloed + The transaction is committed + The attachment is disconnected + +- TRANSACTION START + Triggers are fired in the newly created transaction - uncaught +exceptions are returned to the client and the transaction is not created + +- TRANSACTION COMMIT + Triggers are fired in the committing transaction - uncaught exceptions +rollbacks the triggers savepoint, the commit command is aborted and the +exception is returned to the client + +- TRANSACTION ROLLBACK + Triggers are fired in the rolling-back transaction - changes done will +be rolled-back and exceptions are swallowed