Как вставить строку в пустую таблицу с автоматическим увеличением идентификатора? - PullRequest
0 голосов
/ 30 января 2019

Я хочу вставить строку с автоинкрементным идентификатором uid в таблицу с нулевым значением.В следующем коде я получаю сообщение об ошибке, потому что вы не можете +1 пустое значение (для PMS_CALC_SCHEDULE_UID).Я попытался добавить INT NOT NULL AUTO_INCREMENT, но это неверный синтаксис.

cmdEx.ExecuteNonQuery("INSERT INTO PMS_CALC_SCHEDULE (PMS_CALC_SCHEDULE_UID, USER_UID, SCHEDULED_DATE, PMS_CALC_STATUS_UID, CALCULATION_START_DATE, CALCULATION_END_DATE, STATUS_MESSAGE, PROGRESS) VALUES ((SELECT MAX(PMS_CALC_SCHEDULE_UID) + 1 FROM PMS_CALC_SCHEDULE), '127', '2009-06-15T13:45:30', '0', '2009-06-15T13:45:30','2010-06-15T13:45:30', 'boom', 0 )");

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Решение моей проблемы было:

cmdEx.ExecuteNonQuery("INSERT INTO PMS_CALC_SCHEDULE (PMS_CALC_SCHEDULE_UID, USER_UID, SCHEDULED_DATE, PMS_CALC_STATUS_UID, CALCULATION_START_DATE, CALCULATION_END_DATE, STATUS_MESSAGE, PROGRESS) VALUES ((SELECT COALESCE(MAX(PMS_CALC_SCHEDULE_UID), 0) + 1 FROM PMS_CALC_SCHEDULE), 127, '2009-06-15T13:45:30', 0, '2009-06-15T13:45:30','2010-06-15T13:45:30', 'TEST DELETE THIS ROW', 0 )"); //(SELECT MAX(PMS_CALC_SCHEDULE_UID) + 1 FROM PMS_CALC_SCHEDULE)
0 голосов
/ 30 января 2019

Вы можете использовать функцию NVL или объединить и присвоить значение 0, когда col равно нулю.

Query1 - 
with t1 as (select null as col1) select max(col1) + 1 from t1;

o/p
NULL

Query 2 -
with t1 as (select null as col1) select nvl(max(col1),0) + 1 from t1;

o/p
1
...