Mysql
 sql >> Database >  >> RDS >> Mysql

come passare un valore nullo a un campo di chiave esterna?

Consenti solo la colonna university_id della tabella user per consentire NULL valore in modo da poter salvare null .

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)
)

AGGIORNAMENTO 1

in base al tuo commento, dovresti inserire NULL e non '' .

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

AGGIORNAMENTO 2

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

Come nota a margine, la query è vulnerabile con SQL Injection se il valore(s ) delle variabili proveniva dall'esterno. Si prega di dare un'occhiata all'articolo qui sotto per sapere come prevenirlo. Usando PreparedStatements puoi sbarazzarti dell'uso di virgolette singole attorno ai valori.