フィールドの値と一意性を高めるために、バッチ処理でのOracle

著作権:Copyright権利を保有https://blog.csdn.net/weixin_39921821/article/details/90440936

テスト環境プラットフォーム1.今日のデータが突然消えて、それがここにあることが判明し、最後の夜、私のテストプログラムは、清のライブラリファイルの保存時に行われ、生じました。

したがって、別のテーブルからのいくつかの必要なデータを採取し、他のデータフィールドは、固定書き込むことができ、その後、データが再度100を作っ

そこで問題は、あなたが、ああ、に注意を払うべきか、特にテーブルの主キー、または非常にピットで、前に記憶された2件のデータがあり、元に従い、その後、ほかにも、必須いくつかの他に

ファイルデータの複製等。

スクリプトの分析:

insert into dfgz_pkgmx(in_time,recv_pkgno,code,contractorcorpcode,contractorcorpname,paybankname,paybanksubcode,paybanksubname,paybankcardnumber,payflag,workername,idcardtype,idcardnumber,payrollbankcardnumber,payrollbankname,payrolltopbankname,banklinknumber,payrolltopbankcode,totalpayamount,
balancedate,platflowno,sysno,payrollcode) 
select sysdate,'2','20190329-01','91640000227680637T','某某某','某某某','100164003','某某某','64222396985745921','2',spname,'3621',custid,btbankno,'某某某','某某某','5234523452345','105',1000.00,sysdate,
'P20190423145620190420190328-'||substr('0000000'||rownum, length('0000000'||rownum)-6,7),'0',
'P201904231456201904001' from gjjlmk_customersign t
where rownum<=100

2.実際の初期には、フィールドの一意の値を綴る、私は、戦い「mmsss」(ポイントミリ秒単位)に「P20190423145620190420190328-」SYSDATEを使用して考えました

TO_CHAR(SYSTIMESTAMP、というか、戦いの彼の2番目のクエリ100が一定であるときに、それが使用されていない、後に「SSFF」)が、1秒の数十万のこの比較的愚かな、コンピュータのクエリの実行速度が問題ではないことがわかりました、このSYSDATEおよびSYSTIMESTAMP、

そこにはこれは、最終的には動作しない見つけ、または早すぎるクエリ)(GUIDを使用して考えられています

以下のような:テスト

select to_char(systimestamp,'ssff') from dual
select substr(sys_guid(),1,3) from dual

3.テストの後それはROWNUMを使用することができました

7人しか、その傍受ので、

substr('0000000'||rownum, length('0000000'||rownum)-6,7)

7その後、戦いの前の最後の文字列は、このフィールドには、ユニークな方法を保証することができ、O(∩_∩)O〜ヘクタール

'P20190423145620190420190328-'||substr('0000000'||rownum, length('0000000'||rownum)-6,7)

 

おすすめ

転載: blog.csdn.net/weixin_39921821/article/details/90440936