0

在此处输入图像描述

我使用正向工程师功能自动生成我的数据库模式。有“ON DELETE 和 ON UPDATE”,我知道这指定了当引用的表更改时表中的行会发生什么。是那个触发器,还是因为它写在约束部分?部分代码如下:

-- -----------------------------------------------------
-- Table `la`.`trainers`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `la`.`trainers` (
  `login` VARCHAR(20) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`login`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `la`.`sexes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `la`.`sexes` (
  `id` ENUM('M', 'F') NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB;

INSERT INTO sexes VALUES ('M'),('F');

-- -----------------------------------------------------
-- Table `la`.`athletes`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `la`.`athletes` (
  `pesel` BIGINT(11) NOT NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  `sex_id` ENUM('M', 'F') NOT NULL,
  `trainer_login` VARCHAR(20) NULL,
  PRIMARY KEY (`pesel`),
  CONSTRAINT `fk_athletes_trainers`
    FOREIGN KEY (`trainer_login`)
    REFERENCES `la`.`trainers` (`login`)
    ON DELETE SET NULL  -- W przypadku usunięcia przez trenera konta, wszytkim zawodnikom
                        -- tego trenera zostanie ustawiony trener_login = NULL
    ON UPDATE RESTRICT, -- Nie można uaktualniać loginu trenera, jeśli jakikolwiek zawodnik jest z nim związany
  CONSTRAINT `fk_athletes_sexes1`
    FOREIGN KEY (`sex_id`)
    REFERENCES `la`.`sexes` (`id`)
    ON DELETE RESTRICT -- Nie można usunąć płci jeśli jakikolwiek zawodnik ją posiada
    ON UPDATE RESTRICT)-- Nie można uaktualniać płci jeśli jakikolwiek zawodnik ją posiada
ENGINE = InnoDB;


4

0 回答 0