MySQL Workbench で小さなデータベースを作成しています。「Immobili」と呼ばれるメイン テーブルがあります。このテーブルには、4 つの列 (Comune、Via、Civico、Immobile) で構成される主キーがあります。
同じ主キー (Comune、Via、Civico、Immobile) を持つ他の 3 つのテーブルもありますが、これらのフィールドも Immobili テーブルを参照しています。
最初の質問: 外部キーでもある主キーを作成できますか?
2 番目の質問: 変更をエクスポートしようとすると、次のように表示されます。
Executing SQL script in server
# ERROR: Error 1005: Can't create table 'dbimmobili.condoni' (errno: 150)
CREATE TABLE IF NOT EXISTS `dbimmobili`.`Condoni` (
`ComuneImmobile` VARCHAR(50) NOT NULL ,
`ViaImmobile` VARCHAR(50) NOT NULL ,
`CivicoImmobile` VARCHAR(5) NOT NULL ,
`InternoImmobile` VARCHAR(3) NOT NULL ,
`ProtocolloNumero` VARCHAR(15) NULL ,
`DataRichiestaSanatoria` DATE NULL ,
`DataSanatoria` DATE NULL ,
`SullePartiEsclusive` TINYINT(1) NULL ,
`SullePartiComuni` TINYINT(1) NULL ,
`OblazioneInEuro` DOUBLE NULL ,
`TecnicoOblazione` VARCHAR(45) NULL ,
`TelefonoTecnico` VARCHAR(15) NULL ,
INDEX `ComuneImmobile` (`ComuneImmobile` ASC) ,
INDEX `ViaImmobile` (`ViaImmobile` ASC) ,
INDEX `CivicoImmobile` (`CivicoImmobile` ASC) ,
INDEX `InternoImmobile` (`InternoImmobile` ASC) ,
PRIMARY KEY (`ComuneImmobile`, `ViaImmobile`, `CivicoImmobile`, `InternoImmobile`) ,
CONSTRAINT `ComuneImmobile`
FOREIGN KEY (`ComuneImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`ComuneImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `ViaImmobile`
FOREIGN KEY (`ViaImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`ViaImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `CivicoImmobile`
FOREIGN KEY (`CivicoImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`CivicoImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `InternoImmobile`
FOREIGN KEY (`InternoImmobile` )
REFERENCES `dbimmobili`.`Immobile` (`InternoImmobile` )
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = InnoDB
エンジン ステータスの表示:
テーブル dbimmobili/valutazionimercato の外部キー制約のエラー:
参照される列が最初の列として表示される参照されるテーブルにインデックスが見つからないか、テーブルの列の型と参照されるテーブルが制約に一致しません。>= InnoDB-4.1.12 で作成されたテーブルでは ENUM および SET の内部ストレージ タイプが変更され、古いテーブルのそのような列は新しいテーブルのそのような列によって参照されないことに注意してください。
私はどこで間違っていますか?