У меня есть таблица с именем INVOICES
, которая получает записи из сценария PHP. В нем много столбцов, но два наиболее важных - INVOICE_ID
и INVOICE_TYPE
. Обычно INVOICE_TYPE
- это число от 0 до 3 , которое обозначает разные типы счетов-фактур.
До этого момента все работало гладко, пока два пользователя не отправили счета-фактуры, в то время как на сервере произошел сбой, и он записал оба как один и тот же INVOICE_ID
. Причина в том, что сценарий PHP считывает MAX INVOICE_ID
из INVOICE_TYPE
, затем добавляет 1 , а затем вставляет новую строку с этим INVOICE_ID
. По сути, это программно primary key
. 99,9% раз это работало, но в тот раз это была проблема.
Я пытался найти SQL решения, но не знаю об этом в достаточной степени. Я попытался сделать это сам в запросе SQL для чтения MAX, приращения и вставки, но просто выдает исключение, которое вы не можете выбрать и вставить из той же таблицы одновременно.
Что я интересно, есть ли автоматическое приращение, которое могло бы быть условным для INVOICE_TYPE
, чтобы увеличивать только при совпадении типа. На этом этапе могут помочь любые предложения.