2011-01-16 10 views
1

Ich erstelle einen Trigger, um den Wert plazas_disponibles auf Tabelle VUELO mit dem Wert capacidad auf Tabelle MODELO zu initialisieren. Wie folgt aus:Trigger: Wie kann ich den Wert einer Tabelle mit einem Wert auf einem anderen initialisieren?

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

Und ich bin immer folgende Fehler:

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 

Warum?

+0

Was sind die Schemata für 'VUELO' und' MODELO'? Wie ist die Beziehung zwischen den Zeilen in den beiden Tabellen? – outis

Antwort

1

Da Sie einen Wert in der einzufügenden Zeile nicht ändern, müssen Sie ihn mit der Syntax :NEW (documentation) ändern. und Sie haben nicht gezeigt, wie Sie einen relevanten Wert aus der Tabelle MODELO abrufen können.

Sie benötigen, wie etwas zu tun ist:

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; 

(Obwohl ich nicht ganz sicher bin, ob Sie gerade in einen :NEW Wert auswählen kann - versuchen, das, aber wenn nicht Sie ein erklären, müssen Variable des gleichen Typs, wählen Sie stattdessen diese und weisen Sie diese dann der :NEW) zu.

Verwandte Themen