2016-11-11 4 views
0

Ich versuche, eine Zeile jedes Mal in stud_report Tabelle einzufügen, wann immer ich Zeile in stud_master Tabelle einfügen. Dafür habe ich folgenden SQL-Code mit Hilfe von Triggern versucht, aber ich bekomme:Zeile in einer anderen Tabelle einfügen, wenn durch Trigger in die erste Tabelle eingefügt wird?

Warnung: Trigger erstellt mit Kompilierungsfehlern.

CREATE OR REPLACE TRIGGER trg 
     AFTER INSERT ON stud_master 
    FOR EACH ROW 
    DECLARE 
     roll number; 
     sum number; 
     per decimal(5,2); 
    BEGIN 
     roll := stud_master.roll_no; 
     sum := stud_master.sub1+stud_master.sub2+stud_master.sub3; 
     per := (0.33*(sum)); 
     insert into stud_report values (roll,sum,per); 
    END; 
/

Stud_master Tabelle enthält

+---------+--------------+----------+ 
| Field | Type   | Null? | 
+---------+--------------+----------+ 
| roll_no | number  | NOT NULL | 
| name | varchar2(15) |   | 
| sub1 | number  |   | 
| sub2 | number  |   | 
| sub3 | number  |   | 
| Address | varchar2(30) |   |  
+---------+--------------+----------+ 

Stud_report Tabelle enthält

+------------+--------------+----------+ 
| Field  | Type   | Null? | 
+------------+--------------+----------+ 
| roll_no | number  | NOT NULL | 
| total  | number  |   | 
| percentage | decimal(5,2) |   | 
+------------+--------------+----------+ 

Compilation Fehler sind:

8/26 PLS-00103: Fand die sy mbol ")", wenn eines der folgenden erwarten:
(
9/49 PLS-00103: Fand das Symbol "", wenn eines der folgenden erwarten:
(
10/7 PLS-00103: Das Symbol "Dateiende" wurde gefunden, als eine der folgenden erwartet wurde:
;

+0

Ich glaube, Sie ein Trennzeichen festlegen sollten. Bitte poste auch die Kompilierungsfehler. – Zelldon

+0

Nummer ist kein MySQL-Datentyp. Benutzt du Orakel? –

+0

ja ich benutze Oracle Database 10G –

Antwort

0

Sie sind nicht so weit weg - Gebrauch: neue anstelle des Tabellennamen (und ich würde mit Summe als Variablennamen vermeiden)

create or replace 
TRIGGER trg 
     AFTER INSERT 
     ON STUD_MASTER 
    FOR EACH ROW 

    DECLARE roll NUMBER; 
     sumNO NUMBER; 
     per decimal(5,2); 
    BEGIN 
     roll := :new.roll_no; 
     sumNO:= :new.sub1+:new.sub2+:new.sub3; 
     per := (0.33*(sumNO)); 
     --dbms_output.put_line('New roll no '|| roll || ' sum = ' || sumno || ' PER = ' || per); 
     insert into stud_report values (roll,sumNO,per); 
    END ; 
/
+0

Danke für die Antwort. Mein Trigger wird erfolgreich erstellt, aber jetzt, wenn ich Zeile in 'Stud_master' einfüge, erhalte ich einen Fehler ORA-04098: Trigger 'SYSTEM.TRGIN' ist ungültig und fehlgeschlagen Revalidierung –

+0

Hmm .. Ich habe es getestet und es hat gut funktioniert mich. Können Sie mir Ihre Insert-Anweisung zeigen? –

+0

'Einfügen in stud_master Werte (141, 'David', 73,85,91, 'Washington');' –

Verwandte Themen