I just found the following at http://www.mysql.com/doc/B/u/Bugs.html

--------------------------------------------------------------
Because MySQL allows you to work with table types that don't support
transactions, and thus can't rollback data, some things behave a little
differently in MySQL than in other SQL servers. This is just to ensure
that MySQL never need to do a rollback for a SQL command. This may be a
little awkward at times as column values must be checked in the
application, but this will actually give you a nice speed increase as it
allows MySQL to do some optimisations that otherwise would be very hard
to do. If you set a column to an incorrect value, MySQL will, instead of
doing a rollback, store the best possible value in the column: 

If you try to store a value outside the range in a numerical column,
MySQL will instead store the smallest or biggest possible value in the
column. 

If you try to store a string that doesn't start with a number into a
numerical column, MySQL will store 0 into it. 

If you try to store NULL into a column that doesn't take NULL values,
MySQL will store 0 or '' (empty string) in it instead. (This behavior
can, however, be changed with the -DDONT_USE_DEFAULT_FIELDS compile
option). 

MySQL allows you to store some wrong date values into DATE and DATETIME
columns. (Like 2000-02-31 or 2000-02-00). If the date is totally wrong,
MySQL will store the special 0000-00-00 date value in the column. 

If you set an ENUM column to an unsupported value, it will be set to the
error value 'empty string', with numeric value 0. 

If you set an SET column to an unsupported value, the value will be
ignored. 
--------------------------------------------------------------

This is very appropriately in the page for "Known Errors and Design
Deficiencies in MySQL".  I think all of the above are design
deficiencies.  The right behavior for all these cases is to generate an
error, even at some cost to performance.

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to