1

私はORACLEを実行しています。そして、私は問題で立ち往生しています。DEFAULT制約の値を、作成中に同じテーブルの列の値として設定するにはどうすればよいですか? 例えば:

CREATE table testing
(
 id varchar2(20),
 name varchar2(20),
 myvalue varchar2(30) default id + name
)

上記の表で、 myvalueのデフォルトの制約の値をidnameの連結値として設定するにはどうすればよいですか?? つまり、テーブルが作成されているとき、またはCREATE table コマンド ONLY を使用しているときに、 myvalueフィールドの値を id フィールドと name フィールドの値にしたいのです。どうすればそれができますか?

私を助けてください。ありがとうございました。

4

1 に答える 1

4

次のようにテーブルを変更できます。

ALTER TABLE testing
MODIFY (myvalue VARCHAR2(40) GENERATED ALWAYS AS (id || ' ' || name) VIRTUAL);

または、次のように TRIGGER を作成することもできます。

CREATE OR REPLACE TRIGGER     myTrigger
BEFORE     INSERT OR UPDATE
ON     testing
FOR EACH ROW
BEGIN
     :NEW.myvalue:= :NEW.id
                || ' '
                || :NEW.name;
END;
于 2016-04-28T07:33:05.443 に答える