MySql和创建外键
-- MySQL Script generated by MySQL Workbench
-- Sun Apr 2 17:50:54 2017
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
-- -----------------------------------------------------
-- Schema SintalDB
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema SintalDB
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `SintalDB` DEFAULT CHARACTER SET utf8 COLLATE utf8_slovenian_ci ;
USE `SintalDB` ;
-- -----------------------------------------------------
-- Table `SintalDB`.`User`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`User` (
`PK_User` INT NOT NULL,
`Name` VARCHAR(15) NOT NULL,
`Surname` VARCHAR(25) NOT NULL,
`Phone_Nr` VARCHAR(13) NOT NULL,
`Email` VARCHAR(90) NOT NULL,
`Car_Reg_Nr` VARCHAR(10) NULL,
`Username` VARCHAR(20) NOT NULL,
`Password` VARCHAR(20) NOT NULL,
`Servis_Input_Rights` TINYINT(1) NOT NULL,
`Servis_Output_Rights` TINYINT(1) NOT NULL,
`Servis_Delete_Rights` TINYINT(1) NOT NULL,
`Admin_Rights` TINYINT(1) NOT NULL,
PRIMARY KEY (`PK_User`))
ENGINE = InnoDB
AUTO_INCREMENT = 1
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
-- -----------------------------------------------------
-- Table `SintalDB`.`City`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`City` (
`PK_City` INT NOT NULL,
`Name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`PK_City`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
-- -----------------------------------------------------
-- Table `SintalDB`.`Company`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`Company` (
`PK_Company` INT NOT NULL,
`Name` VARCHAR(25) NOT NULL,
`Address` VARCHAR(45) NOT NULL,
`Address_Nr` VARCHAR(4) NOT NULL,
`FK_City` INT NOT NULL,
PRIMARY KEY (`PK_Company`),
INDEX `FK_City_Company_fkn_idx` (`FK_City` ASC),
CONSTRAINT `FK_City_Company_fkn`
FOREIGN KEY (`FK_City`)
REFERENCES `SintalDB`.`City` (`PK_City`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
-- -----------------------------------------------------
-- Table `SintalDB`.`Facility`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`Facility` (
`PK_Facility_AD` VARCHAR(6) NOT NULL,
`Name` VARCHAR(60) NOT NULL,
`Address` VARCHAR(45) NOT NULL,
`Address_Nr` VARCHAR(4) NOT NULL,
`FK_City` INT NOT NULL,
`FK_Company_Affiliation` INT NOT NULL,
PRIMARY KEY (`PK_Facility_AD`),
INDEX `FK_City_Facility_fkn_idx` (`FK_City` ASC),
INDEX `FK_Company_Affiliation_Facility_fkn_idx` (`FK_Company_Affiliation` ASC),
CONSTRAINT `FK_City_Facility_fkn`
FOREIGN KEY (`FK_City`)
REFERENCES `SintalDB`.`City` (`PK_City`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_Company_Affiliation_Facility_fkn`
FOREIGN KEY (`FK_Company_Affiliation`)
REFERENCES `SintalDB`.`Company` (`PK_Company`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
-- -----------------------------------------------------
-- Table `SintalDB`.`Servis`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`Servis` (
`PK_Servis_Nr` VARCHAR(11) NOT NULL,
`FK_Facility_AD` VARCHAR(6) NOT NULL,
`Description` VARCHAR(255) NOT NULL,
`Date_Recived` DATETIME NOT NULL,
`FK_User_Commited` INT NULL,
`Date_Commited` DATETIME NULL,
`FK_User_Done` INT NULL,
`Date_Done` DATETIME NULL,
PRIMARY KEY (`PK_Servis_Nr`),
INDEX `FK_User_Servis_fkn_idx` (`FK_User_Commited` ASC, `FK_User_Done` ASC),
INDEX `FK_Facility_Servis_fkn_idx` (`FK_Facility_AD` ASC),
CONSTRAINT `FK_User_Servis_fkn`
FOREIGN KEY (`FK_User_Commited` , `FK_User_Done`)
REFERENCES `SintalDB`.`User` (`PK_User` , `PK_User`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_Facility_Servis_fkn`
FOREIGN KEY (`FK_Facility_AD`)
REFERENCES `SintalDB`.`Facility` (`PK_Facility_AD`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
-- -----------------------------------------------------
-- Table `SintalDB`.`ServisNote`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`ServisNote` (
`PK_ServisNote` INT NOT NULL,
`Note` VARCHAR(255) NOT NULL,
`FK_User_Note` INT NOT NULL,
`Date_Created` DATETIME NOT NULL,
`FK_Servis_Nr` VARCHAR(11) NOT NULL,
PRIMARY KEY (`PK_ServisNote`),
INDEX `FK_Servis_ServisNote_fkn_idx` (`FK_Servis_Nr` ASC),
INDEX `FK_User_ServisNote_fkn_idx` (`FK_User_Note` ASC),
CONSTRAINT `FK_Servis_ServisNote_fkn`
FOREIGN KEY (`FK_Servis_Nr`)
REFERENCES `SintalDB`.`Servis` (`PK_Servis_Nr`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_User_ServisNote_fkn`
FOREIGN KEY (`FK_User_Note`)
REFERENCES `SintalDB`.`User` (`PK_User`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
这是我的SQL文件,我运行SQL文件后出现错误
错误代码:1215.无法添加外键约束
17:52:08创建表如果不存在SintalDB
。 Servis
(
PK_Servis_Nr
VARCHAR(11)NOT NULL, FK_Facility_AD
VARCHAR(6)NOT NULL, Description
VARCHAR(255)NOT NULL, Date_Recived
DATETIME NOT NULL, FK_User_Commited
INT NULL, Date_Commited
DATETIME NULL, FK_User_Done
INT NULL, Date_Done
DATETIME NULL,
PRIMARY KEY( PK_Servis_Nr
),INDEX FK_User_Servis_fkn_idx
( FK_User_Commited
ASC, FK_User_Done
ASC),INDEX FK_Facility_Servis_fkn_idx
( FK_Facility_AD
ASC),CONSTRAINT FK_User_Servis_fkn
FOREIGN KEY( FK_User_Commited
, FK_User_Done
)REFERENCES SintalDB
。 User
( PK_User
, PK_User
)ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT FK_Facility_Servis_fkn
FOREIGN KEY( FK_Facility_AD
)REFERENCES SintalDB
。 Facility
( PK_Facility_AD
)ON UPDATE NO ACTION时删除任何操作)ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_slovenian_ci错误代码:1215.无法添加外键约束0.063秒
选中此项:在多列上添加外键
我想你必须添加两个外键才能参考同一列。 您可以替换您的代码并进行测试。
-- -----------------------------------------------------
-- Table `SintalDB`.`Servis`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `SintalDB`.`Servis` (
`PK_Servis_Nr` VARCHAR(11) NOT NULL,
`FK_Facility_AD` VARCHAR(6) NOT NULL,
`Description` VARCHAR(255) NOT NULL,
`Date_Recived` DATETIME NOT NULL,
`FK_User_Commited` INT NULL,
`Date_Commited` DATETIME NULL,
`FK_User_Done` INT NULL,
`Date_Done` DATETIME NULL,
PRIMARY KEY (`PK_Servis_Nr`),
INDEX `FK_User_Servis_fkn_idx` (`FK_User_Commited` ASC, `FK_User_Done` ASC),
INDEX `FK_Facility_Servis_fkn_idx` (`FK_Facility_AD` ASC),
CONSTRAINT `FK_User_Servis_fkn`
FOREIGN KEY (`FK_User_Commited`)
REFERENCES `SintalDB`.`User` (`PK_User` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_User_Servis_2_fkn`
FOREIGN KEY (`FK_User_Done`)
REFERENCES `SintalDB`.`User` (`PK_User`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `FK_Facility_Servis_fkn`
FOREIGN KEY (`FK_Facility_AD`)
REFERENCES `SintalDB`.`Facility` (`PK_Facility_AD`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_slovenian_ci;
链接地址: http://www.djcxy.com/p/86279.html