0

以下のクエリは実行できません。「person」という名前の別のテーブルがあり、主キーperson_idがあります。ご覧のとおり、この列を(顧客テーブルの)外部キーとして取得しようとしています。phpMyAdminは#1064構文エラーを返します。ここで何が問題になっていますか?

CREATE  TABLE IF NOT EXISTS `resort`.`customers` (
  `person_id` VARCHAR(45) NOT NULL ,
  `cid` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  UNIQUE INDEX `person_id_UNIQUE` (`cid` ASC) ,
  PRIMARY KEY (`person_id`) ,
  UNIQUE INDEX `person_id_UNIQUE` (`person_id` ASC) ,
  CONSTRAINT `person_id`
    FOREIGN KEY ()
    REFERENCES `resort`.`person` ()
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB

ちなみに、このクエリはOracleのMySQLWorkbenchによって生成されます。

4

1 に答える 1

3

制約定義に列を含める必要があります。

CONSTRAINT person_id
  FOREIGN KEY ()
  REFERENCES resort.person()
  ON DELETE CASCADE
  ON UPDATE CASCADE

次のようにする必要があります。

CONSTRAINT fk_person_id
  FOREIGN KEY (person_id)
  REFERENCES resort.person (id)
  ON DELETE CASCADE
  ON UPDATE CASCADE
于 2012-05-03T11:21:05.653 に答える