. In this paper we show how temporal databases can be specified and implemented using the bitemporal event calculus, an extension of the event calculus that includes both valid and transaction time, and the possibility to perform temporal updates. A caching mechanism that maintains the current historical state and is updated after each transaction has also been incorporated. We also consider the problem of checking integrity constraints in this kind of temporal databases. The methodology for consistency checking presented here is an extension of other approaches found in the literature that exploit the assumption that the database satisfies its integrity constraints prior to the update transaction. A prototype of the formalism and the checking mechanism, implemented in Prolog, has also been developed. 1 Introduction Time often shows up in information systems, as these are, after all, models of some part of our reality. However, despite a great deal of work in the area of temporal data..