0

Oracle SQLでテーブルを作成しようとしています。テーブルの作成に問題はなく、作成したシーケンスは正常に機能します。現在、フォームを使用して名前と電子メールをダイヤルインすると、テーブルが PK を作成します。PK ID は次のようになります。

10001 | xxx | xxxx
10002 | xxx | xxxx
10003 | xxx | xxxx

私の質問は、関数またはトリガーを使用して ID を自動更新するにはどうすればよいか、次のようにすることです。

QWER10001 | xxx | xxxx
QWER10002 | xxx | xxxx
QWER10003 | xxx | xxxx

手動で更新する方法は知っていますが、情報を入力するときに、ID の前にそのカスタム テキストを配置できるようにしたいと考えています。

テキストは設定できます。数が最大に達したときに変更する必要はありません。

解決策を探すのに何時間も費やしていますが、適切な解決策が見つかりません。助けてください!


また、オンラインでさらに調査を行いました。現在、これがあります。

CREATE OR REPLACE TRIGGER "PROFILE_T1"
   BEFORE INSERT OR UPDATE
   ON "PROFILE"
   FOR EACH ROW
BEGIN
   :NEW.PROFILEID := 'WCCU' sequence.PROFILEIDUSE
END;

しかし、これはうまくいきませんでした。PROFILEID は PK で、自動インクリメントされます。PROFILEIDUSE は、自動インクリメントにするためのシーケンスです。WCCU は、すべてのデータが入力されるときに PK に追加するテキストです。

4

2 に答える 2

0

をすでに作成しているので、列の値を明示的に指定するステートメントでsequenceそれを使用するだけです。ステートメントでINSERT値を明示的に指定したくない場合は、トリガーを使用して列の値を設定できます。insertbefore inert

INSERT ステートメント内

insert into your_table values('QWER'||your_sequence.nextval,....);

トリガーの使用

CREATE OR REPLACE TRIGGER your_trigger
   BEFORE INSERT ON your_table
   FOR EACH ROW
DECLARE
BEGIN
   :new.your_primary_key_column := 'QWER' || your_sequence.nextval;
END your_trigger;

insertこれで、このプライマリ列をステートメントから除外できます。トリガーはそれを追加します。

于 2013-06-04T15:55:15.623 に答える
0

トリガー「PROFILE_T1」を作成または置換

「PROFILE」に挿入

行ごとに

始める

:new.PROFILEID := 'WCCU' || PROFILEIDUSE.nextval;

終わり;

于 2013-06-04T15:50:40.147 に答える