1
を発生したとき、私は、このようなDB2のシーケンス番号と更新だけ条件が
A B C D
32 6100812 778899 123
32 6100812 778593 123
32 6100812 458962 123
33 8000812 885522 P111118
33 8000812 885537 P111118
32 6100915 990011 AA456
32 6100915 789684 AA456
32 6100915 485217 AA456
としてテーブルを持っていると私はシーケンスを作成するDB2機能を使用して を作成することができ、連続する番号を使用してC列に更新を実行する必要が増加。問題は、列AとBが値を変更しないうちに、数字 を増分しないようにする必要があることです。
これまでのところ、私が持っている:だから
create sequence renumber
start with 1
increment by 1
no maxvalue
no cycle;
Update MYLIB.MYTABLE
Set
C = 'SP' || lpad((nextval for renumber),5,'0') ;
drop sequence renumber;
、私が手:
A B C D
32 6100812 778899 SP00001
32 6100812 778593 SP00002
32 6100812 458962 SP00003
33 8000812 885522 SP00004
33 8000812 885537 SP00005
32 6100915 990011 SP00006
32 6100915 789684 SP00007
32 6100915 485217 SP00008
私が本当に必要なことは、このですが:
A B C D
32 6100812 778899 SP00001
32 6100812 778593 SP00001
32 6100812 458962 SP00001
33 8000812 885522 SP00002
33 8000812 885537 SP00002
32 6100915 990011 SP00003
32 6100915 789684 SP00003
32 6100915 485217 SP00003
はこれがで行うことができます
シングルアップデート? 私はこれをSQLRPGLEプログラムの埋め込みSQLとして使用しています。あなたの助け
列AとBの異なる値を持つ別のテーブルを使用できますか?そのテーブルにあなたのシーケンス番号を入れてそれに参加してください。 – Andrew
ありがとう、それは有用であるかもしれませんが、私はプログラムの実行時間を追加するでしょう。なぜなら、QTEMPライブラリ上のテーブルをデータなしで作成し、別個の(A、B)シーケンスを更新し、最後にjoinを使用して元のテーブルを更新します。私はプログラムが頻繁に使用されることを考慮して、手元にあるタスクへのより直接的なアプローチを見つけようとしています。 –
関連する表が最適と思われます。今度は列(A、B)=(32,6100812)、次は(33,8000812)です。しかし未知の未来の日付では、テーブルに列(A、B)=(32,77777777)が挿入されている可能性があります。順次列Dは永久に破棄されるか、または後続のすべての行は、挿入された行のカウントごとに何らかの形で増分する必要があります。リレーショナル・コンセプトに合致するようにデータベースを再設計することで、将来のトラブルを回避し、パフォーマンスを向上させることができます。 – user2338816