質問

「ユーザー」と呼ばれるテーブルがあります。ID、ParentID、名前などのフィールドが含まれています。
私が望んでいるのは、このテーブルを変更して新しいセルフ結合関係を追加して、IDへのderperidリンクを追加することですが、departidは音感バーです。テーブルをドロップせずに、MySQLにこのAlter SQL statmentを書きたいと思います。

役に立ちましたか?

解決

外部キーの制約を追加したいという意味ですか?もしそうなら、を参照してください 外部キーの制約 ドキュメント。簡単なテーブルを作成することから始めて、これが例です。

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

のインデックスを追加します parent_id 桁:

ALTER TABLE users
ADD INDEX `parent_id` (`parent_id`);

外部キーの制約を追加します:

ALTER TABLE users
ADD CONSTRAINT `fk_parent_id`
FOREIGN KEY `parent_id` (`parent_id`)
REFERENCES `users` (`id`);

新しいテーブル構造を表示します:

SHOW CREATE TABLE users;

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id` (`parent_id`),
  CONSTRAINT `fk_parent_id`
    FOREIGN KEY (`parent_id`)
    REFERENCES `users` (`id`)
) ENGINE=InnoDB;

他のヒント

alter table Users add constraint parent foreign key (ParentId) references
  Users (Id);

データを含むテーブルを使用している場合、孤児の関係が存在する場合、外部のキー関係の作成は失敗することに注意してください。外国の鍵を作成する前に、孤児を見つけて修正してください!

from]を選択します users どこ parent_id in in(select id from users);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top