2010-05-03 2 views
8

я должен перенести этот запрос (упрощенный здесь) из T-SQL для ORACLEКакая команда заменит IDENTITY INSERT ON/OFF из SQLServer в Oracle?

SET IDENTITY_INSERT table ON 

INSERT INTO table (id, value) VALUES (1, 2) 

SET IDENTITY_INSERT table OFF 

id будучи поле идентичности в SQLServer.

У меня есть та же таблица с последовательностью в ORACLE, я не мог найти фрагмент кода, который показывает, как отключить последовательность и установить его снова начать с MAX (ID) + 1.

Любой ORACLE эксперт может помочь мне в этом?

Thanks, Rodrigo.

ответ

7

Вам не нужно отключать личность в Oracle. Поскольку вы используете последовательности, просто не используйте его для этой вставки.

То есть, вместо того, чтобы

insert into table (id, values) values (table_seq.nextval, 2) 

использовать

insert into table (id, values) values (1, 2) 

Что касается второго вопроса о перезапуске последовательности, я думаю, что ответил here в SO.

+0

Если вы намерены сохранить идентичность того же (что, по-видимому, так), это не решение. –

+0

@Nate: Вы пропустили, где написано «MAX (id) +1» –

1

Мессинг с колонками, заполненными последовательностями Oracle таким образом, кажется неудачной идеей. В Oracle вы обычно поддерживаете столбец, заполненный последовательностями с помощью триггера. Если вы включите и выключите эту функцию и сбросьте последовательность объявлений lib, вы рискуете, что последовательность не будет доступна, если другой процесс нуждается в ней, или сбросьте значение, которое уже было использовано, но не было выполнено.

+1

Триггеры не нужны, если 'sequence.NEXTVAL' используется во всех инструкциях INSERT для таблицы, что должно действительно происходить только в одной хранимой процедуре , –

+0

+1 как ответ, так и комментарий для разумного совета. –

0

Оставьте последовательности и заново создайте их, когда закончите с максимальным значением + 1.

+0

Предполагая, что это 1-временный ETL –

+1

Это недействительно код, который зависит от этой последовательности, и он также оставляет все привилегии в этом процессе. Если это не проблема, это самый простой вариант. –

+0

@ Rob: Хорошая точка в побочных эффектах. – DCookie

 Смежные вопросы

  • Нет связанных вопросов^_^