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