問題タブ [database-sequence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1122 参照

oracle - Oracle : auto_increment トリガーの作成時に「解析に失敗しました」エラーが発生する

Oracle データベースの ID に対してauto_increment トリガーを作成しようとしています。いくつかの調査の後、シーケンスbefore insert トリガー
を使用して記述する方法を見つけました。

問題は、トリガーを実行すると、次のエラーが発生することです。

解析に失敗しました:

CREATE OR REPLACE TRIGGER AUTO_INC_PDE_ITINERAIRE
BEFORE INSERT
ON PDE_ITINERAIRE
FOR EACH ROW
BEGIN
SELECT PDE_ITINERAIRE_ID_SEQUENCE.NEXTVAL
INTO


次のコマンドを使用する場合:

次の出力が返されます。

3行目 | 位置 10 | PLS-00201: 識別子'NEW.PDE_ITINERAIRE'は
2行目で宣言する必要があります | ポジション03 | PL/SQL: SQL ステートメントは無視されました
4 行目 | ポジション03 | PL/SQL: ORA-00904 識別子が無効です


トリガーの完全なクエリは次のとおりです。

私はオラクルのトリガーにあまり慣れていないので、誰かが私のトリガーの何が問題なのかを見つけるのを手伝ってくれませんか?

御時間ありがとうございます


編集

あなたのアドバイスからトリガーを変更しました


私はまだ同じエラー出力を持っています。

詳細情報 :
--Oracle は v11 です。
--IDEはTOra3を使用。

編集2

尋ねられたDDLは次のとおりです。

CREATE TABLE "GEOMAP"."PDE_ITINERAIRE"
( "ID_PDE_ITINERAIRE" NUMBER(11,0) NOT NULL ENABLE,
"NOM_ITINERAIRE" VARCHAR2(255) NOT NULL ENABLE,
"LONGUEUR" NUMBER(15,4),
"INSEE_DEPART" VARCHAR2(5 )、
"INSEE_ARRIVEE" VARCHAR2(5)、
"TYPE_ITINERAIRE" VARCHAR2(30)、
"TYPE_BALISAGE" VARCHAR2(30)、
"COULEUR_BALISAGE" VARCHAR2(55)、
"NOM_TOPO_GUIDE" VARCHAR2(255)、
"ANNEE_TOPO_GUIDE" VARCHAR2(4)、
"DATE_DERNIER_ENTRETIEN" DATE、
"PERIODICITE_PREVUE" VARCHAR2(30)、
"DATE_PROCHAIN_ENTRETIEN" DATE,
"ORGANISME_ENTRETIEN" VARCHAR2(60),
"OBSERVATIONS_ENTRETIEN" VARCHAR2(30),
"CREATEUR" VARCHAR2(55),
"COUT_TOTAL" VARCHAR2(50),
"DATE_DECISION_CP" DATE,
"SUBVENTION_ITINERAIRE" NUMBER(8,2),
"SUBVENTION_TOPO" NUMBER(8,2),
" OBSERVATIONS_ADMIN" VARCHAR2(255),
"HEBERGEMENT" VARCHAR2(30),
"MONUMENTS" VARCHAR2(30),
"OBSERVATIONS_TOURISTIQUES" VARCHAR2(30),
"GEOMETRIE" "MDSYS"."SDO_GEOMETRY" ,
"COMMUNE_DEPART" VARCHAR2(55),
「COMMUNE_ARRIVEE」VARCHAR2(55)、
「FICHIER_TOPO_GUIDE」VARCHAR2(255)
)

0 投票する
0 に答える
623 参照

sql - トリガー関数で PostgreSQL シーケンスをリセットする

からのデフォルト値をcounter_registry持つ列を持つテーブルがあります。私のトリガー関数 (挿入前に実行される) には、挿入日に既存のトランザクションがない場合にシーケンスをリセットするスニペットがあります。priority_numbernextval('counter_registry_priority_number_seq'::regclass)

新しい日にクライアント アプリケーションから新しいレコードをテーブルに挿入すると、priority_number列は既にリセットされていても、リセット前のシーケンスの nextval から値を取得します。後続の挿入は、1 から始まる新しくリセットされたシーケンスに従います。

シーケンスを適切にリセットするにはどうすればよいですか?その後、最初に挿入したときに、変更されたシーケンスの nextval を取得しますか?

0 投票する
2 に答える
1451 参照

oracle - SimpleJdbcInsert オブジェクトに Oracle シーケンスを指定して、Oracle シーケンスからキーを生成する

私は SimpleJdbcInsert を次のように使用しています。

しかし、ID列のみでエラーがスローされ、ID列をコメントアウトして確認した他の列は正常に機能します。

正常に動作している Oracle Sequence を確認しました。多くのブログをチェックしましたが、SimpleJdbcInsert で Oracle シーケンスを使用している適切なブログを見つけることができませんでした。

0 投票する
1 に答える
39 参照

sql - 単一のクエリを使用して、シーケンスが適用されるすべてのシーケンスと列を取得する方法

PostgreSQL で単一のクエリを使用して、作成されたすべてのシーケンス、そのシーケンスがデータベースに適用されるテーブルと列を取得したいと考えています。直接的または間接的な方法はどれも役に立ちます。

0 投票する
1 に答える
87 参照

sql - チャネルごとに異なるデータベース シーケンスを作成する方法は?

チャネルごとに異なるデータベース シーケンスを維持する必要があるという 1 つの要件があります。例: ABC-SQN1、XYZ-1、およびシーケンス番号は、チャネルに基づいてインクリメントする必要があります。それを達成する方法はありますか。

ありがとう

0 投票する
1 に答える
532 参照

java - Postgres 9.5: mysql からの移行後の自動インクリメント

MySQL データベースを PostgreSQL に移植しています。これまでのところ、すべてのテーブルと列を再構築してデータをインポートすることができました。ただし、自動インクリメントされた一意のidフィールドは正しく変換されていません。pgAdmin GUIを使用して、テーブル内の 1 つの列を修正しました。おそらく、MySQL から Postgres に変換するのは私が初めてではないので、自動化されたタスクとしてこれを行うための堅牢でテスト済みの方法があると思います。誰かがそのような小さなスクリプトを提供できれば幸いです。

ただし、これに対してテスト済みのソリューションが必要な主な理由は、シーケンスを追加して問題の列のデフォルト値を設定した後に問題が発生したためです。2069シーケンスの現在の値は、最後のテーブル エントリの値である に正しく設定されました。プログラムを実行して行を追加すると、一意の値2069が既に割り当てられているという例外が発生しました。プログラムを再度実行すると、新しい行が作成されましたが、自動インクリメントされた ID は2071. スキップし2070ました。

したがって、エラーの原因として考えられるのは次の 3 つです。

  • PostgreSQL 9.5 のバグ
  • Java JDBC コネクタのバグ
  • 自動インクリメント フィールドとシーケンスを間違えました。

テスト済みのソリューションを使用することで、最後の可能性を排除できました。

0 投票する
1 に答える
514 参照

sql - Oracle は、シーケンスの increment_by を変更します

「不正な番号」がスローされる理由を誰かが説明できますか? 私はTO_NUMBERどこにでも置いてみました、まったく入れずに試し''ました、大きな数には入れずに試しました、私が考えることができるすべての組み合わせ、それでもエラー、私にはまったく意味がありません. サブクエリが機能することを確認しました。

0 投票する
1 に答える
542 参照

django - レガシーデータベースを使用するDjango - DBシーケンスを操作するには?

次の SQL クエリを使用して作成されたデータベース テーブルがあるとします。

Django ORM で使用する必要があるため、inspectdbコマンドを実行しました。それは自動生成されたコードです:

アプリのmodels.pyファイルに保存して移行を実行すると、すべて問題ありませんでした。ORM を使用して作成されたように、DB を読み取ることができました。ただし、Bill テーブルの行の作成に問題がありました。

Bill モデルの単純な形式です。

問題は、DB シーケンスで生成された ID を取得できないことです。コードでフィールドを生成してから引数として渡す必要があるため、フォームにフィールドを追加するidことはできません。データベースよりも、生のクエリなしでは取得できない別の ID が作成されます。