私はphp
再帰関数を記述する必要はありません。削除カスケードのMySQL pk_idのremove parent_idを削除
私は記事とカテゴリのリストを生成するルックアップテーブルを持っていますが、それぞれ固有のID(nav_id
)を持っています。子供の場合はparent_id
です。ただし記事は親として使われることはありません。
だから私の考えは、CASCADE DELETEでした。これは違反になり続けます.parent_idはnullにはなりません。しかし、これが私がルートを特定する方法です。
SQL
CREATE TABLE IF NOT EXISTS `navigation` (
`nav_id` INT NOT NULL AUTO_INCREMENT COMMENT '',
`parent_id` INT NULL COMMENT '',
`article_id` INT NULL DEFAULT 0 COMMENT '',
`category_id` INT NULL DEFAULT 0 COMMENT '',
`position` TINYINT NULL COMMENT '',
PRIMARY KEY (`nav_id`, `parent_id`) COMMENT '',
UNIQUE INDEX `nav_id_UNIQUE` (`nav_id` ASC) COMMENT '',
INDEX `rec1_idx` (`parent_id` ASC) COMMENT '',
CONSTRAINT `rec1`
FOREIGN KEY (`parent_id`)
REFERENCES `navigation` (`nav_id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB
しかしために結果を挿入します。
':parent_id' => null
':article_id' => null
':category_id' => 19
':position' => 1
INSERT INTO navigation (
parent_id,article_id,category_id,position
) VALUES (
:parent_id,:article_id,:category_id,:position
)
は
Integrity constraint violation: 1048 Column 'parent_id' cannot be null
任意およびすべてのアイデアは歓迎されています。
テーブルの構造変更?外部キーの変更?
私はトリガを実行した後も同じテーブルからトリガを削除することはできません。
を参照してください: //stackoverflow.com/questions/441988/mysql-foreign-key-to-allow-null – Maximus2012
もう1つ:http://stackoverflow.com/questions/150828 74/null-value-to-foreign-key-fieldを渡す方法 – Maximus2012
Nope。複数のテーブルのいずれか、または主キーnullで問題が発生しました。私は私のCREATE TABLE SQL DEFAULT parent_id = nullを変更し、PHPMyAdminのチェックボックスNull、同じ結果でそれを設定しました。制約を削除するとうまくいきますが、削除カスケードが必要です – Darcey