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]

Reply via email to