1

トリガー/シーケンス列を使用して主キーのauto_incrementをシミュレートするテーブルがいくつかありますが、これはしばらくの間うまく機能していました。

dbを使用するソフトウェアに対して回帰テストを実行するために必要な時間を短縮するために、いくつかのサンプルデータを使用して制御ファイルを作成し、これらの実行をビルドプロセスに追加しました。

テストプロセスがスキーマを最初からインストールし、シーケンスがテーブルにすでに存在する値を返しているため、この変更によりほとんどのテストがクラッシュします。プログラムで「シーケンスを列の最大値に更新する」と言う方法はありますか、またはこれらすべてのシーケンスを更新するスクリプト全体を手動で書き出す必要がありますか、またはnull値をnull値に置き換えるトリガーを変更する必要がありますか?これをどのようにチェックするかをシーケンスします(これはミューティングテーブルの問題を引き起こす可能性があると思いますが)?

4

3 に答える 3

1

シーケンス値を更新する簡単な方法を次に示します。この場合、シーケンスが現在 50 の場合に 1000 に設定します。

alter sequence MYSEQUENCE increment by 950 nocache;
select MYSEQUENCE_S.nextval from dual;
alter sequence MYSEQUENCE increment by 1;

PL/SQL Developer の作成者が、この手法をツールに組み込んだことを称賛します。

于 2008-09-27T02:16:54.183 に答える
1

(既存の値に基づいて)必要な開始値を持つシーケンスを作成するスクリプトを生成できます...

SELECT 'CREATE SEQUENCE '||sequence_name||' START WITH '||last_number||';'
FROM   ALL_SEQUENCES
WHERE  OWNER = your_schema

(質問を正しく理解していれば)

于 2008-09-22T20:21:59.807 に答える
0

スキーマの再構築の一環として、シーケンスを削除して再作成してみませんか?

于 2008-09-22T20:11:56.397 に答える