sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo pasar un valor nulo a un campo de clave externa?

Solo permita la columna university_id de la tabla user para permitir NULL valor para que pueda guardar nulls .

CREATE TABLE user
(
   uid INT NOT NULL,
   Name VARCHAR(30) NOT NULL, 
   university_ID INT NULL,    -- <<== this will allow field to accept NULL
   CONSTRAINT user_fk FOREIGN KEY (university_ID)
       REFERENCES university(university_ID)
)

ACTUALIZACIÓN 1

según su comentario, debe insertar NULL y no '' .

insert into user (name,university_id) values ('harjeet', NULL)

ACTUALIZACIÓN 2

$university_id = !empty($university_id) ? "'$university_id'" : "NULL";
insert into user (name,university_id) values ('harjeet', $university_id);

Como nota al margen, la consulta es vulnerable con SQL Injection si el valor (s ) de las variables vino del exterior. Por favor, eche un vistazo al siguiente artículo para saber cómo prevenirlo. Mediante el uso de PreparedStatements puede deshacerse del uso de comillas simples alrededor de los valores.