2017-12-20 6 views
0

oracle dbに条件を作成するにはどうすればよいですか?私はこのデータベースでは新しいです。 は、私はすでにvehicle_parkedというテーブルを作成しますが、parkedOnSite値が「F」であり、このoracledbで条件を作成するにはどうすればよいですか?

のような構造が

- parked_id number(4) PK 
- arrivalTime date 
- parkedOnSite varchar(1) // value will be T/F 
- vehicle_number varchar(8) 

感謝をvehicle_parked場合、私はNULLとして車両番号をトリガーにしたいです。

+0

だから、あなたは同じ文またはUPDATE文のトリガーをしたいですか? –

+0

フラグがFの場合、挿入/更新時に車両番号を自動的にヌルに設定するトリガーを作成しようとしていますか?または、チェック制約は、ユーザーが非NULL値を作成しようとするのを止めます(逆に、フラグがTの場合は逆にNULL値)。または、フラグがFの場合にテーブルをクエリするときにnull以外の値をnullに置き換えることはできますか?あなたはすでにどれくらい離れていますか? –

+0

@AlexPooleはい、フラグがFの場合は車両番号を自動的にヌルに設定するためのトリガーを作成したいと思いますが、車載番号 – sekti92

答えて

1

データをテーブルに挿入してデータを変更する前に起動するDML triggerを作成すると、データを簡単に操作できます。トリガーで

CREATE OR REPLACE TRIGGER trg_vehicle_parked 
BEFORE INSERT OR UPDATE 
    ON vehicle_parked 
    FOR EACH ROW  
DECLARE 

BEGIN 
    if :new.parkedOnSite = 'F' then 
    :new.vehicle_number := null; 
    end if; 
END; 
/

:newほかに、我々は:old擬似コードを使用することができます。それらは、(:old)またはDMLステートメント発行後(:new)の列の値を表します。あなたは例のように、トリガーであなたの列の古い値と新しい値を比較することができる。特にupdateまたはdeleteトリガーのために :

if (nvl(:old.vehicle_number,0) != nvl(:new.vehicle_number,0)) then 
    go_on_with_statement .... 
+0

@ sekti92 ok、私は急いで誤読する。 –

関連する問題