Используя Oracle 12, у меня есть определенная таблица, подобная этой:
CREATE TABLE example
( "ID" NUMBER(*,0) DEFAULT ON NULL ex_seq.nextval NOT NULL ENABLE,
"SIG_BOOK" NUMBER(10,0),
"SIG_LINE" NUMBER(10,0),
"TRANSFER" NUMBER(10,0) DEFAULT NULL,
CONSTRAINT "PK_EXAMPLE_ID" PRIMARY KEY ("ID")
-- snipped
)
Когда я делаю стандартные отдельные вставки строки и пропускаю идентификатор, вызывается sequence.nextval
и строка вставляется правильно,Но мы должны вставить до нескольких тысяч строк, поэтому я пытаюсь использовать такой код:
INSERT ALL
INTO example (sig_book, sig_line, transfer) VALUES (1,22000006,3436440)
INTO example (sig_book, sig_line, transfer) VALUES (1,22000006,3184718)
SELECT * FROM dual
При использовании INSERT ALL
тогда ограничение Первичного ключа нарушается.
Мыможет переключиться обратно на стандартную пару триггер / последовательность, но надеялся получить дополнительную производительность от использования INSERT ALL
.
Есть ли что-то особенное, что мне нужно сделать, чтобы эта массовая вставка работала на столе сключ, определенный с помощью DEFAULT ON NULL
, или мне нужно вернуться к старой паре триггер / последовательность?