0

私はmysqlにphpmyadminを使用しています。project1、project2、project3、および結合テーブルの 4 つのテーブルがあります。結合テーブルが外部キーを使用して他のすべてのテーブルに接続されており、バックグラウンド スクリプトを使用してデータを project1、prject2、および project3 テーブルに追加するとします。結合テーブル内の対応する外部キーを自動的に更新する方法はありますか (レコードを手動で更新せずに)。GUI に yii フレームワークを使用しています。私はmysqlとyiiフレームワークが初めてなので、何らかの方法を提案してください。

4

1 に答える 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 の画像を添付しました。

PHP My ADMIN 外部キー制約

于 2013-07-11T13:42:00.353 に答える