Исходное состояниевнешнего ключа отношение ограничение - каскад на обновление также другое значение иностранного идентификатора
parents
id parent_validity
1 1
2 1
children
id parent_id child_validity
1 1 1
2 1 1
3 2 1
ТРЕБУЕТСЯ СОСТОЯНИЕ ПОСЛЕ UPDATE
parents
id parent_validity
1 0 (updated as 0)
2 1
children
id parent_id child_validity
1 1 0 (This val is expected as 0)
2 1 0 (This val is expected as 0)
3 2 1 (This val is expected as no change)
ЧТО Я ПОЛУЧИЛ
children
id parent_id child_validity
1 1 0
2 1 0
3 2 0 (all values under this column became 0)
Что я хочу, если я обновляю parent_validity
в таблице parents
, тогда связанный child_validity
в таблице children
должен быть обновлен. То, что я имею в виду от связанных является внешним ключевым отношением id
s.
Мой результат: Любое изменение действительности в таблице parents
изменяется все действия в таблице children
.
Я не хочу делать то, что мне нужно с PHP. пусть MySQL обрабатывает.
Я не смог найти правильные условия поиска для моего запроса в сети, поэтому мне не удалось найти решение. Не могли бы вы мне помочь.
Благодарим за помощь.
примечание: я думаю, что мой заголовок q нуждается в обновлении. (Это был мой лучший, извините.)
My SQL, чтобы создать и дать ограничения
CREATE TABLE `parents` (
`id` int(2) unsigned NOT NULL AUTO_INCREMENT,
`parent_validity` bit(1) NOT NULL COMMENT '1:valid or 0:invalid',
PRIMARY KEY (`id`),
KEY (`parent_validity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `children` (
`id` int(2) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(2) unsigned NOT NULL,
`child_validity` bit(1) NOT NULL COMMENT '1:valid or 0:invalid',
PRIMARY KEY (`id`),
KEY (`child_validity`),
CONSTRAINT fk_parent_id FOREIGN KEY (parent_id) REFERENCES parents(id) ON UPDATE CASCADE,
CONSTRAINT fk_parent_validity FOREIGN KEY (child_validity) REFERENCES parents(parent_validity) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
благодарит за вашу ценную информацию. Я не знал о концепции триггера. Мне нужно читать и изучать его. Не может ли это быть достигнуто только с помощью 'ограничения?Мне нужно только обновление как оригинальное без дополнительной операции. –
Я обновил свой ответ, чтобы попытаться объяснить лучше. Вторая ссылка казалась более легкой, но у меня не было много опыта работы с триггерами MySQL. –