大家好我正在研究数据库,我使用的是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;
答案 0 :(得分:0)
您的表paziente
的主键是重复的。因此在SQL中,您无法将重复键添加为主键。每个主键都应该是唯一的。