#mysql #workbench #forward-engineer
#mysql #workbench #форвард-инженер
Вопрос:
Я использовал функцию forward engineer для автоматической генерации моей схемы БД. Есть «ПРИ УДАЛЕНИИ и ПРИ ОБНОВЛЕНИИ», я понимаю, что это указывает, что происходит со строками в таблице при изменении таблицы, на которую ссылается. Это триггер или что, потому что он написан в части ограничения? Часть кода ниже:
-- -----------------------------------------------------
-- 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;
Комментарии:
1. Не триггер, действия, которые необходимо предпринять, когда FK обнаруживает изменение в таблице, на которую ссылается. смотрите dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html
2. Да, я это читал, так что же это такое, есть ли для этого название, потому что оно ведет себя как триггер, не так ли?