We describe how a functional database programming language can be extended with transcations and ECA-rules. Fundamental requirements of such an extension are that the declarative semantics of the language not be compromised, that the syntax of the language not be disrupted unduly, and that impedance mismatch problems be avoided. We defince what we mean by events, conditions and actions and describe the semantics of ECA-rules with reference to event detection. parameter-binding transaction scheduling and abort handling. We define the execution semantics for the ECA systems in the language itself. These semantics form the basis of our implementation of the ECA system.