Возникла необходимость модифицировать триггер, который обеспечивает целостность связи при операции UPDATE в родительской таблице. Движок - MyISAM.
Есть 2 таблицы: Developers (потомок) и Engines (родитель).
Таблица Developers:
CREATE TABLE `developers` (
`id_developer` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fk_engine` int(10) unsigned NOT NULL,
`founding_date` date NOT NULL,
`earnings` float(6,2) NOT NULL,
`developer_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`description` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`location` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_developer`),
KEY `fk_Developers_Engine_id_name` (`fk_engine`)
) ENGINE=MyISAM
Таблица Engines:
CREATE TABLE `engines` (
`id_engine` int(10) unsigned NOT NULL AUTO_INCREMENT,
`engine_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`engine_description` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id_engine`)
) ENGINE=MyISAM
Триггер:
DELIMITER $$
CREATE TRIGGER
gamestore_myisam.updateRestrict_myisam_engines
BEFORE UPDATE
ON gamestore_myisam.engines
FOR EACH ROW
BEGIN
IF (SELECT COUNT(*) FROM gamestore_myisam.developers WHERE fk_engine = old.id_engine)
!=0
THEN
signal sqlstate '45000' set message_text = 'Cannot update a child row:
foreign key constraint fails!';
END IF;
END $$
DELIMITER ;
Суть проблемы: данный триггер не позволяет обновить id_engine таблицы Engines, если этот id_engine содержится в fk_engine таблицы Developers так как в этом случае будет нарушена целосность связи. Но если мне необходимо обновить поле engine_name или engine_description этого id_engine в таблице Engines, то триггер не даст этого сделать.
Как модифицировать триггер чтобы он по прежнему не давал обновлять id_engine в таблице Engines, но при этом была возможность обновлять поля engine_name и engine_description этого id_engine?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо получить список баз, в которых присутствует таблицы
Допустим есть строка с названиями, записанные через ","
Есть приложение на реакте, мне с бэкенда через ajax приходит сгенерированная там js функция для сторонней библиотекиПроблема в том, что эта...
Способна ли библиотека решить следующую задачу (вычислительную задачу)?