''
et null
ne sont pas les mêmes. si votre serveur mysql est en mode strict, alors il refusera de faire l'insertion puisque vous avez passé des données invalides pour la colonne. sans mode strict, il renvoie un avertissement.
mysql> create table a (a float not null);
Query OK, 0 rows affected (0.11 sec)
mysql> insert a values ('');
Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
mysql> set sql_mode = 'STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.02 sec)
mysql> insert a values ('');
ERROR 1265 (01000): Data truncated for column 'a' at row 1
soit insérer un null
explicite s, ou ne spécifiez même pas la colonne dans l'insert.
lorsque vous mettez à jour, vous pouvez envoyer toutes les valeurs que vous avez car mysql ignorera automatiquement celles qui n'ont pas été modifiées.