Hola a todos.
Insisto que el problema no está tanto en el el uso de los nombres de los campos, sino en el uso de las comillas contra los valores nullos... en realidad hay muchas formas en que podría hacer funcionar el insert, listando o no los nombres de los campos, pero lo importante es el uso correcto de los valores nulos.
Código MySQL:
Ver original -> campo_no_obligatorio
VARCHAR(30), Query OK, 0 rows affected (0.10 sec)
-> 'campo no obligatorio uno');
Query OK, 1 row affected (0.03 sec)
mysql
> INSERT INTO tabla
(id
, campo_obligatorio
, campo_no_obligatorio
) -> VALUES (NULL, 'campo obligatorio dos', 'campo no obligatorio dos'); Query OK, 1 row affected (0.04 sec)
mysql
> INSERT INTO tabla
(campo_obligatorio
, campo_no_obligatorio
) -> VALUES ('campo obligatorio tres', 'campo no obligatorio tres'); Query OK, 1 row affected (0.02 sec)
mysql
> INSERT INTO tabla
(id
, campo_obligatorio
, campo_no_obligatorio
)Query OK, 1 row affected (0.02 sec)
-> VALUES ('campo obligatorio cinco'); Query OK, 1 row affected (0.03 sec)
mysql
> INSERT INTO tabla
(id
, campo_obligatorio
, campo_no_obligatorio
) -> VALUES (15, 'campo obligatorio quince', 'campo no obligatorio quince'); Query OK, 1 row affected (0.02 sec)
Query OK, 1 row affected (0.02 sec)
+----+--------------------------+-----------------------------+
| id | campo_obligatorio | campo_no_obligatorio |
+----+--------------------------+-----------------------------+
| 1 | campo obligatorio uno
| campo
no obligatorio uno
| | 2 | campo obligatorio dos
| campo
no obligatorio dos
| | 3 | campo obligatorio tres
| campo
no obligatorio tres
| | 4 | campo obligatorio cuatro
| NULL | | 5 | campo obligatorio cinco
| NULL | | 15 | campo obligatorio quince
| campo
no obligatorio quince
| | 16 | campo obligatorio otro | |
+----+--------------------------+-----------------------------+
Observa el último caso, es muy claro lo que puse desde el primer post:
Cita: es muy distinto enviar una cadena vacía ('') a un valor nulo (null)
Saludos Leo.