Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como passar um valor nulo para um campo de chave estrangeira?


Apenas permita a coluna university_id da tabela user para permitir NULL valor para que você possa salvar 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)
)

ATUALIZAÇÃO 1

com base no seu comentário, você deve inserir NULL e não '' .
insert into user (name,university_id) values ('harjeet', NULL)

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

Como nota lateral, a consulta é vulnerável com SQL Injection se o valor(s ) das variáveis ​​veio de fora. Por favor, dê uma olhada no artigo abaixo para saber como evitar isso. Usando PreparedStatements você pode se livrar de usar aspas simples em torno de valores.