2016-04-11 15 views
0

deserved_slope_2列にNULLの値を設定しようとしていますが、ユーザーがフォームの値を編集するときに発生します。残念ながら、この列は、別の表の列の主キー(自動インクリメント索引)にリンクする外部キーです。Mysql外部キー列にNULL値を設定します

私は取得要求実行している場合:

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 

を私はNULL IDが呼ばテーブルに存在しないためであると読みました。残念ながら、この列にNULLを設定することはできません。

主キー列にNULL値を含めることはできません。

どうすればこの問題を解決できますか? deserved_slope_2列にNULLを設定したい(リセットする)。

- テーブルのテーブル構造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` 

- テーブルのテーブル構造game_created_slopes

に依存する外部キー制約を持つ列にnullに値を設定
CREATE TABLE `game_created_slopes` (
    `id_created_slopes` int(11) NOT NULL, 
    `id_player` int(11) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

主キーは 'NULL'が、外部キー缶を含めることはできません。 CREATE TABLEで 'deserved_slope_1'カラム' NULL'を宣言するだけです。 – Barmar

+0

最初のブロックの更新が 'deserved_slope_2 = '0''を試みているものであれば、フィールドを' NULL'に設定しようとしません。これは同じではない「0」に設定しようとする試みである。 – Uueerdo

答えて

0

ユニークではなく、NULLでない列はかなりわかりやすいはずです

UPDATE game_created_lifts SET deserved_slope_2 = NULL WHERE id_created_lifts = '200' LIMIT 1; 

SQL Fiddleにアクセスすると、オンラインで確認できます。

テストデータ:

create table a (a int primary key); 
create table b (a int references a(a)); 

insert into a(a) values (1); 
insert into b(a) values (1); 

update b set a = null; 

問合せ:

select * from b 

結果:

(null) 
関連する問題