First and foremost, nothing does NOT equal NULL. NULL means, for the most part, unknown. I.e. it has a value, we just don't know it yet. Blank, or nothing, is not the same thing. If you insert it this way, it should take it:
insert into table (not_null_field) values ('');
Whereas if you do it this way:
insert into table (not_null_field) values (NULL);
then it should fail.
If you insert into the row, without setting anything for a field, then a NULL gets inserted.
Stop thinking of '' and NULL being the same, they aren't, although some databases, like Oracle treat them the same, they are aren't the same at all.