Я хочу запросить одну таблицу, чтобы увидеть, существуют ли строки с типом «А». поэтому я использую этот SQL:Mysql как это сделать без блокировки
SELECT EXISTS(select * from %T where type = 'A');
тогда мне нужно обновить значение столбца другой таблицы к вышеупомянутому результату. Чтобы предотвратить вставку с типом «А» во время обновления, я думаю использовать блокировку. но блокировка очень дорогая, есть ли другой альтернативный способ сделать это без блокировки?
Если мы должны использовать блокировку, я думаю, что если таблица уже имела тип A, нет необходимости блокировать вставку во время обновления, потому что результат все равно будет 1. предотвращать вставку, если нет строки с типом A . Как это сделать?
Спасибо!
Вы пытались выполнить транзакцию в SQL? Я думаю, вы можете это использовать. Эта ссылка поможет вам «http://dev.mysql.com/doc/refman/5.7/en/commit.html» –
Разве вы не можете просто ОБНОВИТЬ another_table SET field = (SELECT EXISTS ...)? – StanislavL
Конечно, любой замок дешевле, чем обновление. Какова ваша фактическая цель? Вместо того, чтобы обманывать явным блокированием, вы можете захотеть ['start transaction' ...' commit'] (http://dev.mysql.com/doc/refman/5.7/en/commit.html) – wallyk