0

私は2つのテーブルを持っています

CREATE TABLE `patient_doctor_decision` (
  `id` bigint(50) NOT NULL,
  `help_entity_id` bigint(50) NOT NULL,
  `description` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `help_entity` (
  `id` bigint(50) NOT NULL AUTO_INCREMENT,
  `type` int(50) NOT NULL,
  `comments` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
); 

両方のテーブルには、すでに大量のデータがあります。

私は、help_entity.id フィールドを使用して、patient_doctor_decision.help_entity_id フィールドに FK 関係を確立したいと考えています。

ALTER TABLE `patient_doctor_decision`  
  ADD CONSTRAINT `fk_help_entity` FOREIGN KEY (`help_entity_id`) REFERENCES `help_entity`(`id`);

外部キーが有効であり、参照先テーブルに主キーとして存在しない外部キーがないことを確認しました。

SELECT * FROM patient_doctor_decision d WHERE d.help_entity_id NOT IN (
    SELECT id FROM help_entity);

0 行が返されます。

しかし、上記の Alter ステートメントを実行すると、このエラーが発生します

ERROR 1005: Can't create table 'mydb.#sql-57c_9' (errno: 121)

提案してください。

4

1 に答える 1

0

まあ、正確には機能しませんでしたが、外部キー制約名を変更するとうまくいきました。

于 2013-01-30T08:23:49.560 に答える