私はmysqlにphpmyadminを使用しています。project1、project2、project3、および結合テーブルの 4 つのテーブルがあります。結合テーブルが外部キーを使用して他のすべてのテーブルに接続されており、バックグラウンド スクリプトを使用してデータを project1、prject2、および project3 テーブルに追加するとします。結合テーブル内の対応する外部キーを自動的に更新する方法はありますか (レコードを手動で更新せずに)。GUI に yii フレームワークを使用しています。私はmysqlとyiiフレームワークが初めてなので、何らかの方法を提案してください。
1 に答える
0
http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
あなたの質問を完全には理解していませんが、 と を参照していると思いON DELETE
ますON UPDATE
。
ON DELETE
&ON UPDATE
オプション
CASCADE
SET NULL
NO ACTION
RESTRICT
ON DELETE と ON CASCADE は FK テーブルに制約として配置され、親 ID が削除または更新されたときに発生します。
したがって、projects テーブル内の id を変更し、この変更を結合テーブルに反映させたい場合は、ON UPDATE CASCADE
.
余談ですが、なぜテーブルが 4 つあるのですか? 2 つのテーブルの必要性しかわかりません。
以下の SQL は構文的に正しくない可能性があることに注意してください。
CREATE TABLE tbl_projects (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
name varchar(255),
...
...
);
方法 1 結合テーブルで各プロジェクトの行を作成する:
CREATE TABLE tbl_combine (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
project_id integer,
...
CONSTRAINT `FK_combine_project`
FOREIGN KEY (`project_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
);
方法 2:
CREATE TABLE tbl_combine (
id integer NOT NULL PRIMARY KEY AUTO INCREMENT,
project1_id integer,
project2_id integer,
project3_id integer,
...
CONSTRAINT `FK_combine_project1`
FOREIGN KEY (`project1_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `FK_combine_project2`
FOREIGN KEY (`project2_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
CONSTRAINT `FK_combine_project3`
FOREIGN KEY (`project3_id`)
REFERENCES `tbl_project` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
);
ボタンをクリックして外部キーをインデックスとして設定し、テーブル関係ビューに移動してオプションを選択することにより、phpmyadmin の GUI を介してこれを行うこともできます。
これがお役に立てば幸いです - phpmyadmin の画像を添付しました。
于 2013-07-11T13:42:00.353 に答える