如何在C#中使用OracleBulkCopy时在没有Oracle触发器之前插入序列值

时间:2018-12-28 19:51:21

标签: .net oracle copy bulk

在.net中使用Oracle批量复制,我正在尝试将记录批量插入表中。如果该表包含主键序列列,那么在批量插入时如何在主键列中插入值。

如何使用OracleBulkCopy批量上传时设置序列值。

没有性能问题,我们需要这样做,触发不是正确的方法。请让我知道可能性。

谢谢A

2 个答案:

答案 0 :(得分:0)

如果您确信不想使用BEFORE INSERT触发器来使用从适当序列中获取的值来填充主键列,则一种选择是使用所获取的数字来填充列值的集合从序列开始,然后将列数组绑定到批量INSERT上,就像对其他列所做的一样。

如果您拥有允许使用的Oracle版本(IIRC为12或更高版本),则还可以将PK列上的默认值设置为YOUR_SEQUENCE.NEXTVAL

答案 1 :(得分:0)

通过此链接http://www.dba-oracle.com/t_how_to_add_sequence_to_oracle_table_column.htm

在Oracle 12c及更高版本中,您可以将序列直接与表相关联: 例如,我们直接在create table语句中将序列与表相关联。

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!');