I currently trying to use an Object Relational Mapper for CodeIgniter and I’m experiencing something I did not expect.
I have a table with a couple of fields, some of which are NOT NULL. An insert query is which is missing of the NOT NULL fields is generated — a new row is added but with blanks for those fields.
I did not know MySQL would disregard the NOT NULL fields that aren’t present in the query and insert the row anyways. Is there a way to restrict this?
–Edit–
Let me add a few more details and try to explain it a bit more
Here is a sample table:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`color` varchar(40) COLLATE utf8_bin DEFAULT '',
`shape` varchar(40) COLLATE utf8_bin NOT NULL,
`size` varchar(40) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Here is a sample query:
INSERT INTO `test` (`shape`) VALUES ('foo')
I don’t have size in my query yet it still adds the row – is this expected?
(The sample query was run in phpMyAdmin)
Empty string is not the same thing as
NULL. Perhaps ORM inserts just''for those fields.