On Thu, 2006-01-05 at 08:58, Russ Brown wrote:
> Does anyone know where I can find the 'official' definition of what it
> meant by ACID compliance?
>
> We're having a discussion about it that we could do with resolving. In
> particular, the key point is what it meant by the 'C' part. I maintain
> that MySQL is not ACID compliant because it will (among other things)
> swallow integers that don't fit into a column silently and just
> truncate it, while our DBA (while agreeing that this is not good
> behaviour) maintains that this is not what the C part means: he says
> that's just about transaction states (succeed or fail etc).
This seems a fairly good, short one:
http://databases.about.com/od/specificproducts/a/acid.htm
The C stands for consistency. Consistency means that only valid data
can be written to the database. MySQL fails this test precisely because
it does / can write inconsistent data to the database. Note that even
the latest version, 5.0.xx, by default, inserts a truncated number on
overflow. It does issue a warning, but that's little consolation now
that your data has been rendered inconsistent. There is a switch you
can throw that tells it to only accept proper values, but get this,
users can turn it off. So, there's no way to ensure that the database
enforces proper constraint on the values being inserted.
And why, after all this work, does MySQL still not have check
constraints. They'd have to be easier to implement than some of the
other features they've implemented so far.