2017-03-23 7 views
0

Ich versuche, einen Auslöser zu schreiben, die einen Standardwert in einer anderen TabelleMySQL-Trigger Einfügen vor

Nach dem Einfügen eines Datensatzes in meine Studenten Tabelle einfügen werde ich einen neuen Datensatz in meine Student_Chapter Tabelle eingefügt werden soll.

Die Student-Tabelle hat das Feld S_ID, das automatisch inkrementiert wird, und den Primärschlüssel für diese Tabelle.

Die Student_Chapter Tabelle hat zwei Felder STUDENT_ID Int Chapter_ID Int

ich diesen Trigger zu erstellen versucht, zu feuern, wenn Sie einen neuen Studentenakte eingeben. Allerdings bekomme ich einen Fehler beim Versuch, es zu erstellen ... und ich habe mehrere Dinge ausprobiert ... und schaut sich verschiedene Beispiele auf dieser Seite an.

Create Trigger AssignDefaultChapter_trigger 
Before INSERT On Students 
FOR EACH ROW 
BEGIN 
    DECLARE Default_ID INT; 
     SET Default_ID =(SELECT C_ID FROM Chapter WHERE ChName = "UNASSIGNED"; 
    Insert into Student_Chapter(Chapter_ID,Student_ID) values (Default_ID,New.S_ID); 
END; 

Soweit ich sehen kann, ist nichts falsch mit diesem Einsatz.

Der Fehler, den ich bekomme, ist # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für die Verwendung in der Nähe von '; Legen Sie in Student_Chapter (Chapter_ID, STUDENT_ID) Werte (Default_ID, neu.‘In Zeile 6

Antwort

0

A fehlt )? Nach dem "nicht zugeordnet" Auch sollten Sie nicht das Präfix Ihre Parameter mit einem @

Create Trigger AssignDefaultChapter_trigger 
Before INSERT On Students 
FOR EACH ROW 
BEGIN 
    DECLARE @Default_ID INT; 
     SELECT @Default_ID = C_ID FROM Chapter WHERE ChName = "UNASSIGNED"; 
    Insert into Student_Chapter(Chapter_ID,Student_ID) values (@Default_ID,New.S_ID); 
END; 
Verwandte Themen