2011-01-16 14 views
1

私は、テーブルMODELO上の値capacidadでテーブルVUELO上の値plazas_disponiblesを初期化するためのトリガを作成しています。トリガー:別の値を持つテーブルの値を初期化するにはどうすればよいですか?

create or replace 
TRIGGER inicializar_plazas_disponibles 
    BEFORE INSERT OR UPDATE ON VUELO 
    BEGIN 
     SET VUELO (plazas_disponibles) = MODELO (capacidad); 
    END inicializar_plazas_disponibles; 

そして、私は次のエラーを取得しています:

Error(2,10): PL/SQL: SQL Statement ignored 
Error(2,14): PL/SQL: ORA-00922: missing or invalid option 
Error(2,23): PL/SQL: ORA-00971: missing SET keyword 

なぜ?このような

+0

'VUELO'と' MODELO'のスキーマは何ですか? 2つのテーブルの行間の関係は何ですか? – outis

答えて

1

挿入されている行の値を変更する方法ではないため、:NEW構文(documentation)を使用して変更する必要があります。 MODELOテーブルから関連する値を取得する方法を示していません。あなたが好きな何かをする必要が

CREATE OR REPLACE TRIGGER inicializar_plazas_disponibles 
BEFORE INSERT OR UPDATE ON vuelo 
FOR EACH ROW 
BEGIN 
    SELECT capacidad 
    INTO :NEW.plazas_disponibles 
    FROM modelo 
    WHERE ... some condition, presumably another :NEW column ... 
END; 

を(私はあなたがまっすぐ :NEW値に選択することができるかどうか全くわからないが - あなたが宣言する必要がありますことをしようと、そうでない場合代わりにそれを選択し、それを :NEWに割り当てます)。