Как вставить значение последовательности при использовании OracleBulkCopy в C # без триггера перед оракулом - PullRequest
0 голосов
/ 28 декабря 2018

Использование массового копирования Oracle в .net Я пытаюсь выполнить массовую вставку записи в таблицу. Если таблица содержит столбец последовательности первичного ключа, как я могу вставить значение в столбец первичного ключа во время массовой вставки.

Как установить значение последовательности во время массовой загрузки с использованием OracleBulkCopy.

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

по этой ссылке http://www.dba -oracle.com / t_how_to_add_sequence_to_oracle_table_column.htm

В Oracle 12c и более поздних версиях вы можете связать последовательность непосредственно с таблицей: в этом примере мысвяжите последовательность с таблицей непосредственно в операторе создания таблицы.

create sequence my_test_id_seq increment by 1;

create table 
   my_test
(
  id        number default my_test_id_seq.nextval,
  name      varchar(10)
);

insert into 
   my_test 
(name) 
values 
   ('no sequence required!');
0 голосов
/ 29 декабря 2018

Если вы уверены, что не хотите использовать триггер BEFORE INSERT для заполнения столбца первичного ключа значениями, полученными из соответствующей последовательности, одним из вариантов является заполнение набора значений столбца числами, полученными из вашегопоследовательность и затем связать массив столбцов с вашей основной вставкой, так же, как вы делаете для других столбцов.

Если у вас есть версия Oracle, которая позволяет это (12 или более поздняя, ​​IIRC), вы также можете установитьзначение по умолчанию для вашего столбца PK должно быть YOUR_SEQUENCE.NEXTVAL.

...