Какая команда заменит IDENTITY INSERT ON / OFF из SQLServer в Oracle? - PullRequest
9 голосов
/ 03 мая 2010

Мне нужно перенести этот запрос (упрощенно здесь) с T-SQL на 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 может помочь мне с этим?

Спасибо, Родриго.

Ответы [ 3 ]

7 голосов
/ 03 мая 2010

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

То есть вместо

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

вы используете

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

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

1 голос
/ 03 мая 2010

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

0 голосов
/ 03 мая 2010

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

...