2015-08-12 3 views
0

Использование Oracle DB Пытается создать логику, где при вставке новой строки логика проверяет наличие существующего численного значения. Если есть значение, тогда логика выполнила бы max (значение) +1. Если нет значения, тогда INSERT '1'.Синтаксис SQL Insert с max (value) +1

+2

Почему вы это делаете, а не с помощью последовательности? Вы знаете, что это не работает в многопользовательской среде, верно? Что вы пробовали? С какими проблемами вы столкнулись? Вы пытаетесь сделать это в процедуре? Триггер? Что-то другое? –

ответ

3

Я хотел бы предложить вам использовать последовательность вместо того, чтобы искать максимальное значение + 1.

последовательности будет заботиться о инкрементировании для вас. http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm

Пример:

CREATE SEQUENCE MY_SEQ START WITH 1 INCREMENT BY 1; 

Вставить как

INSERT INTO MY_TABLE (ID, WIDGET) VALUES (NEXTVAL FOR MY_SEQ, 'asdf'); 
+0

делает использование опции последовательности могут быть наиболее эффективно сопровождаться реализации триггера 'создать или заменить триггер bi_test Перед вставкой на my_table для каждой строки начинают : new.id: = my_seq.nextval; конец'; – ridi