Cita: pero el problema va cuando yo dejo un campo vacio uno de los campos en las que va la clave o llave foránea. sabiendo que yo esos campos los deje como NULL al crear mi tabla de la b.d.
Aclaremos un detalle, por las dudas, ya que mencionas que los inserts fallan cuando lo haces en la aplicación: Un campo es NULL cuando lo omites en el INSERT, o cuando le especificas NULL al valor correspondiente.
Además hay que recordar que NULL no es lo mismo que 'NULL'. El primero es el nulo, y el otro es una cadena de texto que dice "NULL", y para la base de datos no es lo mismo.
¿Qué significa esto?
Pues que si tienes una tabla, por ejemplo
TablaA(a, b, c, d, e)
donde el campo b puede ser nulo, no es lo mismo esto:
que esto:
Ni tampoco eso:
El primer caso está bien, el segundo podría dispara un error de tipo de dato, y el tercero dispararía un error si el campo "b" fuese FK, porque el espacio vacío
no es un NULL.
¿Cuál es la forma que usas tu para definir NULL, según queda armado por programación?