Моя таблица "счетов-фактур":
CREATE TABLE `invoices` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`invoice_id` int(11) NOT NULL,
PRIMARY KEY (`id`,`invoice_id`),
UNIQUE KEY `invoice_id` (`invoice_id`),
KEY `order_id` (`order_id`)
) ENGINE=MyISAM AUTO_INCREMENT=115 DEFAULT CHARSET=utf8
Когда я пытаюсь выполнить запрос:
mysqli_query($conn, "LOCK TABLES 'invoices' WRITE");
в сценарии php, он не работает, так как я могу вставить новую строкув «заблокированной» таблице, используя SQL-консоль phpMyAdmin во время блокировки.
Могу ли я быть полностью уверен, что такой запрос
INSERT INTO `invoices` (`invoice_id`) SELECT MAX(`invoice_id`)+100 FROM `invoices`
может успешно предотвратить условия гонки, поэтому использовать его вместо запроса LOCK TABLES;
ПРИМЕЧАНИЯ:
- Я не создал эту таблицу.
- Я не могу изменить таблицу.