2017-12-07 1 views
0

Versuchen Sie, vor dem Update einen Trigger einzufügen, der den Wert der Spalte "Age" basierend auf der Berechnung aus DateOfBirth festlegen würde. Aber mir scheint etwas zu fehlenMSQL vor dem Einfügen, Aktualisierungstrigger

create trigger calcAge before insert on BoardMember 
for each row 
begin 
set NEW.Age = YEAR(CURRDATE()) - YEAR(BoardMember.DateOfBirth) 
end; 
+0

Ja, Sie fehlen uns zu sagen, was Sie erreichen wollen und was auf dem Weg schief geht –

+0

Er/Sie versucht, das Alter ab dem Zeitpunkt der Geburt zu berechnen – cdaiga

Antwort

0

Sie versuchen, das Alter automatisch aus dem Geburtsdatum in der Zeile der Daten vor dem Einfügen zu berechnen. So sollte der Code wie:

delimiter // 
create trigger calcAge before insert on BoardMember 
for each row 
begin 
set NEW.Age = YEAR(CURRDATE()) - YEAR(IFNULL(NEW.DateOfBirth,CURRDATE())); 
end// 
delimiter ; 

I IFNULL verwendet, um das aktuelle Datum zu erhalten, wenn das Geburtsdatum null ist. Noticed Wie BoardMember.DateOfBirth durch NEW.DateOfBirth ersetzt wird, haben Sie hier einen Fehler gemacht. Neu wird verwendet, um auf die Datenzeile zu verweisen, die in die Tabelle eingefügt werden soll.

Weitere Informationen finden Sie Create Trigger in MySQL

+0

Danke sehr viel! – Celeste

+0

Gern geschehen @Celeste. – cdaiga