2012-06-12 34 views
21

Oracle SQL Developerで列を自動的にインクリメントするように設定するにはどうすればよいですか?フォームが無効になっているのはなぜですか?SQLデベロッパーで自動インクリメント列を設定する方法

Oracle SQL Developer

注:画像はデータモデラを示しているが、既存のデータベースを編集についての質問と答えトップ話。

+0

この記事は非常によく似ています。http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in-oracle –

答えて

24

残念ながら、oracleはmysqlのようにauto_incrementをサポートしていません。あなたはそれを得るために少し余分な努力をする必要があります。

が、これはあなたのテーブルであると言う -

CREATE TABLE MYTABLE (
    ID NUMBER NOT NULL, 
    NAME VARCHAR2(100) 
    CONSTRAINT "PK1" PRIMARY KEY (ID) 
); 

あなたはシーケンスを作成する必要があります -

CREATE SEQUENCE S_MYTABLE 
START WITH 1 
INCREMENT BY 1 
CACHE 10; 

とトリガ - のOracle SQLでそれを行う方法

CREATE OR REPLACE TRIGGER T_MYTABLE_ID 
BEFORE INSERT 
ON MYTABLE 
REFERENCING NEW AS NEW 
FOR EACH ROW 
BEGIN 
    if(:new.ID is null) then 
    SELECT S_MYTABLE.nextval 
    INTO :new.ID 
    FROM dual; 
    end if; 
END; 
/

ALTER TRIGGER "T_MYTABLE_ID" ENABLE; 
+0

私はそのことが自動的に作成できるようにしたいと思います....hehehe .... –

+2

2012年以降、物事が変化しました。 Oracle Database 12cの導入により、これを実現できます。ここでそれを行う方法は次のとおりです:http://www.thatjeffsmith.com/archive/2014/01/defining-12c-identity-columns-in-oracle-sql-developer-data-modeler/ – thatjeffsmith

+1

私はダンの答えがより好きです。絵のあるもの1000ワードに相当する。 – Wes

1

開発者: 左ペインで、接続の下に "Sequences"と右クリックしてcを選択します。コンテキスト依存のポップアップから新しいシーケンスを再生成する。詳細を記入してください:スキーマ名、sequence_name、プロパティ(値から始まり、最小値、最大値、増分値など)を入力し、[OK]をクリックします。このauto_incrementを使用するキーを持つテーブルがあると仮定すると、このテーブルに挿入する際には、このプロパティを使用するフィールドに "your_sequence_name.nextval"を付けてください。 これは助けてくれると思います! :)

5

SQLモデラーで自動インクリメントを行うことができます。列のプロパティウィンドウで[一般]をクリックし、[自動インクリメント]ボックスを選択します。その後、自動増分ウィンドウが有効になります。

+0

あなたの投稿をありがとう!あなたの投稿にシグネチャ/タグラインを使用しないでください。あなたのボックスはあなたの署名として数えられ、あなたのプロフィールを使って好きな自分に関する情報を投稿することができます。 [署名/タグラインについてのよくある質問] –

1

私は少し古いように見えるこのポストを見つけましたが、私は私の新しい発見に誰もが更新すると思った。

WindowsでOracle SQL Developer 4.0.2.15を使用しています。 私たちのデータベースは、Windowsで動作するOracle 10g(バージョン10.2.0.1)です。オラクルの列自動インクリメントを作るために

-

  1. は、表のセクションを展開し、右変更したい列を持つテーブルをクリックし
  2. [接続]タブで、データベース接続を開き自動増分を選択し、編集...を選択します。
  3. 自動増分する列を選択します(プライマリキー列)
  4. 次に、次のリストの「ID列」セクションをクリックします。列を変更し、タイプを「なし」から「列シーケンス「
  5. は、デフォルト設定のままにします(またはシーケンスとトリガーの名前を変更するには、好む場合)、[OK]を

あなたのidカラム(主キー)意志今オートインクリメントが、シーケンスをクリックしてください1から開始されます。 IDを特定のポイントまでインクリメントする必要がある場合は、シーケンスに対していくつかの変更ステートメントを実行する必要があります。
This postにはもう少し詳細とこれを克服する方法があります。

私は解決策にhere

47

を見つけ、あなたのPKの自動インクリメントを作りたい場合は、その主キーのID列プロパティを設定する必要があります。

  1. テーブルを右クリックし、[編集]を選択します。
  2. 「編集」テーブルウィンドウで「列」を選択し、PK 列を選択します。
  3. IDの[列]タブに移動し、[列の順序]を[種類]として選択します。これにより、 トリガーとシーケンスを作成し、そのシーケンスを 主キーに関連付けます。

理解を深めるために下の図を参照してください。

//私のソースがある:あなたが正しかったトム・studee @http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

+2

偉大な答え。なぜそれがupvotedされていないのか分かりません。 – Wes

+0

ありがとう、ありがとう! –

+0

偉大な答え。しかし、あなたが欲しくないかもしれない "挿入する前にnullをチェックする"チェックボックスを調べることが重要であることを改めて表明するかもしれません。シーケンスIDを使用する場合は、通常、別の場所からデータを入力することは望ましくありません(ただし、依存することもありますが、しばらく考えてください)。 – not2savvy

3

、それはデータ・モデラーでそれを行うことが可能です。

テーブルをダブルクリックして、列セクションに移動します。ここで、自動増分を持つ列をダブルクリックします。一般的なセクションでは、 "autoincrement"というチェックボックスがあります。ちょうどそれをチェックしてください。

その後、「自動インクリメント」セクションに移動してカスタマイズすることもできます。

これを保存し、SQLスクリプトを生成するようデータモデラーに依頼すると、オートインクリメントを表すシーケンスとトリガーが表示されます。

関連する問題