0

OracleBulkCopy を使用して、区切られた大きなファイルを 1 つのテーブルに読み込もうとしています。主キーは列 ID であり、number(20,0) として定義されています。nHibernate は通常、挿入時にシーケンスを介してインクリメントします。odp.net を介して oracleBulkCopy を使用する場合、挿入時に ID がインクリメントされ、他のユーザーがアプリケーションを介して挿入しているときに同時実行性の問題が発生しないようにするにはどうすればよいですか?

4

2 に答える 2

0

IDを自動的にインクリメントできるように、Oracleでシーケンスを作成する必要があります

CREATE SEQUENCE MY_TABLE_SEQ INCREMENT BY 1 START WITH 1 NOMAXVALUE NOMINVALUE NOCYCLE NOCACHE NOORDER;

CREATE TRIGGER MY_TABLE_INSERT_TRIGGER BEFORE INSERT ON MY_TABLE REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN SELECT MY_TABLE_SEQ .NEXTVAL INTO :NEW. MY_ID_FIELD FROM DUAL; 終わり;

于 2013-01-16T17:26:43.203 に答える
0

答えは間違っています。

OracleBulkCopy を使用する場合は、トリガーを無効にする必要があります。

http://ora-26086.ora-code.com/

于 2013-05-17T14:22:21.993 に答える