MySQL Workbench错误1022

时间:2014-10-14 09:13:41

标签: mysql-workbench

大家好我正在研究数据库,我使用的是MySQL Workbench。

我尝试创建3个表,但它产生了一个问题:

  

错误:错误1022:无法在表'paziente'SQL中写入重复键   代码:

-- -----------------------------------------------------
-- Table `gestione di prenotazione`.`paziente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestione di prenotazione`.`paziente` (
  `tesseraSanitario` BIGINT NOT NULL,
  `codfsc` VARCHAR(45) NOT NULL,
  `luogo di nascita` VARCHAR(45) NULL,
  `dataNascita` DATE NULL,
  `tipo` VARCHAR(1) NULL,
  `username` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  `AUSL` VARCHAR(45) NULL,
  PRIMARY KEY (`tesseraSanitario`, `codfsc`),
  INDEX `cf_idx` (`codfsc` ASC),
  UNIQUE INDEX `cf_UNIQUE` (`codfsc` ASC),
  CONSTRAINT `cf`
    FOREIGN KEY (`codfsc`)
    REFERENCES `gestione di prenotazione`.`persona` (`cf`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB

以下是3表:

CREATE SCHEMA IF NOT EXISTS `gestione di prenotazione` DEFAULT CHARACTER SET utf8 ;
USE `gestione di prenotazione` ;

-- -----------------------------------------------------
-- Table `gestione di prenotazione`.`persona`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestione di prenotazione`.`persona` (
  `cf` VARCHAR(45) NOT NULL,
  `nome` VARCHAR(45) NULL,
  `cognome` VARCHAR(45) NULL,
  `sesso` VARCHAR(1) NULL,
  `indirizzo` VARCHAR(45) NULL,
  `telefono` INT NULL,
  `comune` VARCHAR(45) NULL,
  PRIMARY KEY (`cf`),
  UNIQUE INDEX `cf_UNIQUE` (`cf` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `gestione di prenotazione`.`medico`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestione di prenotazione`.`medico` (
  `idmedico` INT NOT NULL,
  `codicefiscale` VARCHAR(45) NOT NULL,
  `numero di assistito in carico` INT NULL,
  `numero massimo di assistito` INT NULL,
  PRIMARY KEY (`idmedico`, `codicefiscale`),
  INDEX `cf_idx` (`codicefiscale` ASC),
  UNIQUE INDEX `cf_UNIQUE` (`codicefiscale` ASC),
  CONSTRAINT `cf`
    FOREIGN KEY (`codicefiscale`)
    REFERENCES `gestione di prenotazione`.`persona` (`cf`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `gestione di prenotazione`.`paziente`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gestione di prenotazione`.`paziente` (
  `tesseraSanitario` BIGINT NOT NULL,
  `codfsc` VARCHAR(45) NOT NULL,
  `luogo di nascita` VARCHAR(45) NULL,
  `dataNascita` DATE NULL,
  `tipo` VARCHAR(1) NULL,
  `username` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  `AUSL` VARCHAR(45) NULL,
  PRIMARY KEY (`tesseraSanitario`, `codfsc`),
  INDEX `cf_idx` (`codfsc` ASC),
  UNIQUE INDEX `cf_UNIQUE` (`codfsc` ASC),
  CONSTRAINT `cf`
    FOREIGN KEY (`codfsc`)
    REFERENCES `gestione di prenotazione`.`persona` (`cf`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

1 个答案:

答案 0 :(得分:0)

您的表paziente的主键是重复的。因此在SQL中,您无法将重复键添加为主键。每个主键都应该是唯一的。