Oracle - 自動インクリメンタルIDを持つ新しい行の挿入
workidカラムを持つworkqueueテーブルを持っています。workIDカラムは自動的にインクリメントされる値を持っています。バックエンドでクエリを実行して新しい行を挿入し、workIDカラムを自動的にインクリメントさせる方法はありますか?
NULLを挿入しようとすると、エラーORA01400 - Cannot insert null into workidがスローされます。
insert into WORKQUEUE (facilitycode,workaction,description) values ('J', 'II', 'TESTVALUES')
これまで試したこと - テーブルの詳細を見てみましたが、オートインクリメントが見当たりません。テーブルのスクリプトは以下の通りです。
"WORKID" NUMBER NOT NULL ENABLE,
データベースオラクル10g
一部既存データのスクリーンショットです。
<hr>;
ANSWER:
一人一人、皆さんに感謝しなければなりません。今日はとても良い勉強になりましたし、皆さんのサポートがなければ、できなかったことです。要するに、私はすでにシーケンスとトリガーがあるテーブルに行を挿入しようとしていたのです。私がしなければならなかったことは、私の質問に適したシーケンスを見つけ、そのシーケンスをクエリに呼び出すことだけでした。
皆さんからいただいたリンクのおかげで、これらの配列を調べ、このworkidカラムに対応するものを見つけることができました。皆さんのおかげで、私は今日、別のドラゴンに挑むことができ、患者さんの治療が一歩前進するのを助けることができました! ";
29
8
Oracleには、組み込みのauto_incrementはありません。
シーケンス
とトリガー
を使用する必要があります。正しいやり方はこちらをご覧ください。("Creating auto-increment columns in Oracle"のステップバイステップのハウツー)
自動インクリメント番号を取得するには、Oracleでシーケンスを使用する必要があります。 (こちら]1とこちらを参照)。
これは、トリガーやシーケンスなしでそれを行う簡単な方法です。
それは私にとってはうまくいきましたが、空のテーブルではうまくいきませんでした。
SEQUENCE
と
TRIGGERのどちらを使っても、データベーステーブルの指定したカラムの値を自動的に増加させることができますが、
TRIGGERS` の使用がより適切でしょう。トリガーで使用される主要な句とその例については、Oracleの以下のドキュメントを参照してください。テーブル、スキーマに関連するストアドPL/SQLブロックです。 データベースや
以下は、例として、カラムの最大値に基づいて、指定したテーブルに主キー値を挿入する簡単な
TRIGGER
です。スキーマ名やテーブル名などを変更して使用することができます。試しに使ってみてください。CT0001
、
CT0002、
CT0002`などの値を自動的に生成し、指定したテーブルの指定したカラムに挿入します。/。
完全なノウハウ、トリガーとシーケンスの例を含めました。
参照: http://thenullpointerexceptionx.blogspot.mx/2013/06/llaves-primarias-auto-incrementales-en.html。
完全を期すために、Oracle 12cがこの機能をサポートしていることを述べておきます。 また、トリガーアプローチよりも高速であると考えられます。 例: