null 값을 외부 키 필드에 전달하는 방법?
테이블이 두 개 있습니다.
university
:
university_id(p.k) | university_name
그리고.user
:
uid | name | university_id(f.k)
보관방법university_id
사용자 테이블에 NULL이 있습니까?
한 가지 쿼리만 작성하고 있습니다. 쿼리는 다음과 같습니다.
INSERT INTO user (name, university_id) VALUES ($name, $university_id);
여기서$university_id
프론트 엔드에서 null일 수 있습니다.
university
테이블은 제가 기본적으로 설정할 것입니다.
앞단에서, 학생은 그에 따라 대학 이름을 선택할 것입니다.university_id
에 전해질 것입니다.user
표, 그러나 학생이 어떤 대학 이름을 선택하지 않는 경우, 는 null 값을 다음에 전달해야 합니다.user
을 위한 식탁university_id
들판.
열만 허용university_id
탁상의user
허락하다, 허용하다, 허용하다, 허용하다, 허용하다,NULL
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)
)
업데이트 1
당신의 의견에 근거해서, 당신은 삽입할 것입니다.NULL
아닌''
.
insert into user (name,university_id) values ('harjeet', NULL)
업데이트 2
$university_id = !empty($university_id) ? "'$university_id'" : "NULL";
insert into user (name,university_id) values ('harjeet', $university_id);
추가로, 쿼리는 변수의 값이 외부에서 가져온 경우 취약합니다.아래 기사를 보고 예방법을 알아보세요.사용함으로써PreparedStatements
값을 중심으로 작은 따옴표를 사용하는 것을 없앨 수 있습니다.
여기 내가 외국 열쇠를 가지고 있다고 가정합니다.user_id
그리고 그것을 위해 null 값을 위해 null 값을 삽입합니다.
외래 키에 대한 삽입 null 값을 확인하려면 확인란을 선택해야 합니다.
MySQL InnoDB를 사용하고 있었고 심지어 FK열에 NULL을 허용하고 NULL을 기본으로 사용하고 있었는데 오류가 발생했습니다.그래서 SET 구문을 사용했습니다.
INSERT INTO (table) SET value1=X...
그리고 FK열을 설정하지 않을 뿐입니다.
언급URL : https://stackoverflow.com/questions/15082874/how-to-pass-a-null-value-to-a-foreign-key-field
'programing' 카테고리의 다른 글
카트, 체크아웃 및 보기 순서에서 제품 사용자 정의 필드 및 표시 값 설정 (0) | 2023.09.15 |
---|---|
하위 쿼리를 사용하는 쿼리는 하위 쿼리 대신 고정 데이터가 있는 동일한 쿼리보다 더 긴 시간이 필요합니다. (0) | 2023.09.15 |
utf-8 인코딩된 텍스트를 MySQL 테이블에 로드하는 중 (0) | 2023.09.15 |
"docker run -d" 후 도커 컨테이너가 자동으로 중지됩니다. (0) | 2023.09.15 |
$($).wtclick', '#id', 함수({}) 대 $('#id'.wtclick', 함수({}) (0) | 2023.09.15 |