JamesDR wrote: > Scott Baker wrote: >> If I create the following table, and then try and insert the following >> data both inserts work. It looks like the second one works (it shouldn't >> because Last is NULL) because it assumes Last = ''. Is there a way I can >> make it NOT assume that? If Last is not specified it should reject that >> command. Is that possible? >> >> --------------------------------------------------------------- >> >> DROP TABLE IF EXISTS foo; >> >> CREATE TABLE foo ( >> ID INTEGER PRIMARY KEY AUTO_INCREMENT, >> First VarChar(30), >> Last VarChar(30) NOT NULL, >> Zip INTEGER >> ); >> >> INSERT INTO foo (First, Last, Zip) VALUES ('Jason','Doolis',97013); >> INSERT INTO foo (Last) VALUES (17423); >> > > In your last insert example, Last is inserted as 17423. Which is not null. >
Yup, empty string, the manual says this... http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html However it does say that to enforce NOT NULL you would have to change the sql_mode http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html EG: SET SESSION sql_mode='STRICT_ALL_TABLES'; INSERT INTO foo (zip) VALUES (12345); SET SESSION sql_mode=''; I get an error on the insert statement: "Field 'Last' doesn't have a default value." You may need to set sql_mode to STRICT_ALL_TABLES before the insert or do it in my.cnf or as a command line parameter. -- Thanks, James -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]