Ich habe die folgende Tabelle:SQL - mehrreihige Einsatz für 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 |
Ich versuche Werte nach unten mehrere Zeilen in der client_id Spalte einzufügen:
insert into order_details
(`client_id`)
values
(1),
(1),
(1),
(1),
(2),
(3),
(14),
(4),
(5),
(5),
(5),
(5),
(7),
...
(12),
(13);
Wenn ich versuche, die auszuführen Einfügen mit striktem Modus aus, erhalte ich einen Fremdschlüssel-Constraint-Fehler (Err: 1452). Es scheint jedoch zu versuchen, in die Spalte order_id im Gegensatz zu client_id einzufügen (siehe err msg). Was könnte diesen Fehler verursachen und wie kann ich die Einfügung in die Spalte client_id umleiten?
Fehler: Nachricht
kann nicht hinzugefügt oder ein Kind Zeile aktualisieren: ein Fremdschlüssel nicht (
db
order_details
, CONSTRAINTorder_details_ibfk_1
FOREIGN KEY (order_id
) LITERATURorders
(order_id
).)
Perfect, danke. Wenn ich in diesen Feldern bereits Werte habe und diese nicht überschreiben möchte, sollte ich einfach null übergeben? –
@RayFoo Wie können Sie Werte in diesen Feldern haben? Dies sind neue Zeilen, die Sie erstellen. – Barmar
Die andere Möglichkeit besteht darin, einen 'DEFAULT'-Wert in der Anweisung' CREATE TABLE' zu deklarieren. – Barmar