Эй, у меня возникают пробелы при обновлении моего проекта
Я создал похожие таблицы, которые могли бы помочь объяснить мою проблему
Мой стол
CREATE TABLE `test_task` (
`pk` bigint(20) NOT NULL AUTO_INCREMENT,
`parent_pk` bigint(20) NOT NULL,
`msg` varchar(100) NOT NULL,
`status` int(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`pk`),
KEY `parent_pk` (`parent_pk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
данные
INSERT INTO `test_task` (`parent_pk`, `msg`, `status`)
VALUES ('1234566', 'left', '1'),
('1234566', 'left', '1'),
('1234567', 'right', '1'),
('1234567', 'top', '1'),
('1234567', 'bottom', '1'),
('1234567', '980', '1'),
('1234566', 'left', '1')
Текущий запрос, который вызывает блокировки
update test_task
set status = 0
where parent_pk = 1234567 and
msg = 'left'
решение, которое у меня сейчас есть, это
update test_task
set status = 0
where pk in (select c.pk
from (Select pk
from test_task
where parent_pk = '1234567' and
msg = 'left') c )
Мой вопрос теперь будет обновляться на основе первичного ключа, если у нас все еще будут блокировки БД. Блокировки происходят во время вставки и обновления значений
текущий уровень изоляции БД REPEATABLE_READ
, и я бы хотел, чтобы он оставался таким
Буду признателен за любую помощь