Я не могу найти официальное объяснение mysql об этом, поэтому я хочу бросить его здесь. Если у меня есть ограничения внешнего ключа между двумя таблицами в MySQL, скажем, tableA является родительской таблицей, tableB является дочерней таблицей. И, на родительской таблице A, я буду использовать «ON UPDATE CASCADE ON DELETE CASCADE», чтобы убедиться, что действия update/delete могут автоматически применяться к дочерней таблицеB MySQL.Ограничение на обновление внешнего ключа mysql в транзакции?
Теперь, мой вопрос: если обновление дочерней таблицы и родительской таблицы в транзакции или нет? Или с использованием следующих утверждений, любых различий?
Способ 1: UPDATE tableA SET col1 = "A" и col2 = "B";
Способ 2: Начать; UPDATE tableA SET col1 = "A" и col2 = "B"; Commit;
Теперь я столкнулся с проблемами в методе 1: когда tableA обновлен, tableB может занять очень много времени, чтобы обновить соответствующие столбцы (не в транзакции наверняка). Кто-нибудь сталкивался с подобными проблемами раньше?
Да, две таблицы находятся в innoDB. Насколько я понимаю, каждое утверждение является транзакцией в InnoDB. В этом случае, почему в mehtod1 обновления для двух таблиц не являются атомарными? – WilliamLou
Каскадные обновления будут частью первоначальной операции и поэтому будут атомарными. –
Я не могу найти какие-либо документы MySQL об этом. И, основываясь на моих собственных экспериментах, в методе 1 обновления к двум таблицам не являются атомарными. – WilliamLou