Ich versuche, einen NULL
Wert in der deserved_slope_2
Spalte festzulegen, wenn der Benutzer den Wert in einem Formular bearbeitet. Leider ist diese Spalte ein Fremdschlüssel, der auf einen Primärschlüssel (Autoinkrement-Index) einer Spalte einer anderen Tabelle verweist.Mysql Set NULL-Wert in Fremdschlüssel Spalte
Wenn die Anfrage ausgeführt wird, erhalte ich:
Error Number: 1452
Cannot add or update a child row: a foreign key constraint fails (`game_skisimulation`.`game_created_lifts`, CONSTRAINT `fk_game_created_lifts_game_created_slopes2` FOREIGN KEY (`deserved_slope_2`) REFERENCES `game_created_slopes` (`id_created_slopes`) ON DE)
UPDATE game_created_lifts SET deserved_slope_2 = '0' WHERE id_created_lifts = '200' LIMIT 1
ich gelesen habe, dass dies, weil die NULL-ID nicht in der genannten Tabelle vorhanden ist. Leider scheint es, dass ich in dieser Spalte auch NULL nicht setzen kann:
Eine Primärschlüsselspalte darf keine NULL-Werte enthalten.
Wie kann ich dieses Problem lösen? Ich möchte NULL in der deserved_slope_2
Spalte setzen (um es zurückzusetzen).
- Tabellenstruktur für Tabelle game_created_lifts
CREATE TABLE `game_created_lifts` (
`id_created_lifts` int(11) NOT NULL,
`id_player` int(11) NOT NULL,
`deserved_slope_1` int(11) DEFAULT NULL,
`deserved_slope_2` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- RELATIONS FOR TABLE `game_created_lifts`:
-- `deserved_slope_1`
-- `game_created_slopes` -> `id_created_slopes`
-- `deserved_slope_2`
-- `game_created_slopes` -> `id_created_slopes`
- Tabellenstruktur für Tabelle game_created_slopes
CREATE TABLE `game_created_slopes` (
`id_created_slopes` int(11) NOT NULL,
`id_player` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Der Primärschlüssel kann nicht enthalten 'NULL', sondern ein Fremdschlüssel kann. Sie müssen nur die 'verdient_slope_1' Spalte' NULL' in der 'CREATE TABLE' deklarieren. – Barmar
Wenn diese Aktualisierung im ersten Block die ist, die Sie versuchen, 'verdiente_slope_2 = '0' 'ist kein Versuch, das Feld auf' NULL' zu setzen; es ist ein Versuch, es auf "0" zu setzen, was nicht dasselbe ist. – Uueerdo