나는 다음과 같은 테이블이 있습니다SQL - FK
| order_details | CREATE TABLE `order_details` (
`order_id` int(11) NOT NULL,
`client_id` int(11) NOT NULL,
`product_id` varchar(10) NOT NULL,
`serial` int(11) NOT NULL,
`detail_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`detail_id`),
KEY `order_id` (`order_id`),
KEY `client_id` (`client_id`),
CONSTRAINT `order_details_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `orders` (`order_id`),
CONSTRAINT `order_details_ibfk_2` FOREIGN KEY (`client_id`) REFERENCES `clients` (`client_id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8 |
내가 CLIENT_ID 컬럼의 값 아래로 여러 행을 삽입하려고 : 나는를 실행하려고
insert into order_details
(`client_id`)
values
(1),
(1),
(1),
(1),
(2),
(3),
(14),
(4),
(5),
(5),
(5),
(5),
(7),
...
(12),
(13);
엄격 모드를 끈 상태에서 삽입하면 외래 키 제약 조건 오류 (Err : 1452)가 발생합니다. 그러나 그것은 client_id (err msg 참조)와는 달리 order_id 열에 삽입하려고 시도하는 것 같습니다. 이 오류의 원인은 무엇이고 insert를 client_id 열로 리디렉션 할 수 있습니까?
오류 메시지 :
에게 실패를추가 또는 자식 행을 업데이트 할 수 없습니다 : 외래 키 제약 조건 (. CONSTRAINT
order_details_ibfk_1
FOREIGN KEY (order_id
) 참고 문헌orders
(order_id
)db
order_details
)
완벽한을, 감사합니다. 만약 내가 이미 그 필드에 값을 가지고 그들을 무시하고 싶지 않아 그냥 null을 통과해야합니까? –
@RayFoo 어떻게 그 필드에 값을 가질 수 있습니까? 이들은 당신이 만들고있는 새로운 행입니다. – Barmar
또 다른 옵션은'CREATE TABLE' 문에'DEFAULT' 값을 선언하는 것입니다. – Barmar