我想将外键添加到person_id中,这样当我在级联(person_id)上删除时,也会删除我的address_id和cv_id。现在我的问题是,当我在我的详细信息页面上删除时,它只删除了person值,而没有删除address和cv两个选项卡address和cv都与person有关系
-- MySQL Script generated by MySQL Workbench
-- 04/12/16 16:22:18
-- 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 persons
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema persons
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `persons` DEFAULT CHARACTER SET utf8 ;
USE `persons` ;
-- -----------------------------------------------------
-- Table `persons`.`address`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `persons`.`address` (
`address_id` INT(11) NOT NULL AUTO_INCREMENT,
`address_street` VARCHAR(45) NULL,
`address_housenumber` VARCHAR(4) NULL,
`address_zipcode` VARCHAR(6) NULL,
`address_city` VARCHAR(45) NULL,
`address_state` VARCHAR(45) NULL,
PRIMARY KEY (`address_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `persons`.`cv`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `persons`.`cv` (
`cv_id` INT NOT NULL AUTO_INCREMENT,
`cv_name` VARCHAR(255) NULL,
`cv_path` VARCHAR(255) NULL,
`cv_type` VARCHAR(255) NULL,
PRIMARY KEY (`cv_id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `persons`.`person`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `persons`.`person` (
`person_id` INT(11) NOT NULL,
`person_firstname` VARCHAR(45) NULL,
`person_lastname` VARCHAR(45) NULL,
`person_email` VARCHAR(45) NULL,
`person_phonenumber` INT(10) NULL,
`person_cv` INT(11) NULL,
`person_address` INT(11) NULL,
PRIMARY KEY (`person_id`),
INDEX `address_id_idx` (`person_address` ASC),
INDEX `cv_id_idx` (`person_cv` ASC),
CONSTRAINT `address_id`
FOREIGN KEY (`person_address`)
REFERENCES `persons`.`address` (`address_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `cv_id`
FOREIGN KEY (`person_cv`)
REFERENCES `persons`.`cv` (`cv_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;发布于 2016-04-12 22:34:10
您已经将两个外键都设置为ON DELETE NO ACTION,因此在删除时不会采取任何操作。
如果希望在删除父行时删除相关行,请使用ON DELETE CASCADE。
发布于 2016-04-12 22:37:01
为了保持一致性,我建议您不要删除数据。
对你的应用程序进行查询以获得deleted = 0。
只需在您的表格上设置“已删除”字段+设置ON DELETE RESTRICT,以防止意外删除时数据丢失。
附注:设置ON UPDATE CASCADE以保持关系的灵活性。
但是如果你坚持,找到:Multi-Table Deletes
https://stackoverflow.com/questions/36576269
复制相似问题