10

このクエリ (ここでは簡略化) を T-SQL から ORACLE に移行する必要があります

SET IDENTITY_INSERT table ON

INSERT INTO table (id, value) VALUES (1, 2)

SET IDENTITY_INSERT table OFF

idSQLServer の Identity フィールドです。

ORACLE にシーケンスを含む同じテーブルがありますが、シーケンスを無効にして MAX(id) + 1 で再度開始するように設定する方法を示すスニペットが見つかりませんでした。

ORACLEの専門家がこれを手伝ってくれますか?

ありがとう、ロドリゴ。

4

3 に答える 3

7

Oracle で ID を無効にする必要はありません。シーケンスを使用しているため、その挿入には使用しないでください。

つまり、代わりに

insert into table (id, values) values (table_seq.nextval, 2)

あなたが使う

insert into table (id, values) values (1, 2)

シーケンスの再開に関する 2 番目の質問については、SOで回答されていると思います。

于 2010-05-03T15:13:53.757 に答える
1

このように、Oracle シーケンスによって移入された列をいじることは、悪い考えのように思えます。Oracle では、通常、トリガーを使用してシーケンスを介して入力された列を維持しています。この機能のオンとオフを切り替えたり、シーケンスを自由にリセットしたりすると、別のプロセスが必要とするときにシーケンスが使用できなくなったり、既に使用されているがコミットされていない値にリセットされたりするリスクがあります。

于 2010-05-03T15:26:03.637 に答える
0

max+1 値の設定が完了したら、シーケンスをドロップして再作成します。

于 2010-05-03T15:41:01.303 に答える