Erstellen von audit-trail-trigger in MySQL

Ich soll ein trigger immer dann ausgelöst, wenn das Darlehen-Tabelle aktualisiert wird (d.h. ein Buch wird zurückgegeben). Es sollten Werte aus den Zeilen in der Kredit-Tabelle nur, wenn das Darlehen ist überfällig, und legen Sie Sie in eine neue Tabelle.


den 'Kredit' Tabelle:

CREATE TABLE loan (
    book_code INT NOT NULL, 
    student_num INT NOT NULL, 
    out_date DATE NOT NULL, 
    due_date DATE NOT NULL, 
    return_date DATE, 
    CONSTRAINT pk_loan PRIMARY KEY (book_code, student_num, out_date),
    CONSTRAINT fk_book_code FOREIGN KEY (book_code) REFERENCES copy(book_code),
    CONSTRAINT fk_num FOREIGN KEY (student_num) REFERENCES student(student_num)
);

und die 'überfälligen' Tabelle

CREATE TABLE overdue (
    overdue_id INT NOT NULL AUTO_INCREMENT,
    student_num INT NOT NULL, 
    out_date DATE NOT NULL, 
    due_date DATE NOT NULL, 
    return_date DATE,
    CONSTRAINT pk_overdue PRIMARY KEY (overdue_id),
    CONSTRAINT fk_num FOREIGN KEY (student_num) REFERENCES student(student_num)
 );

Was habe ich so weit:

DELIMITER $$

CREATE TRIGGER trg_overdue_loans AFTER UPDATE ON loan FOR EACH ROW
    BEGIN   
        IF (NEW.return_date > OLD.due_date) THEN 
            INSERT INTO overdue (student_num, out_date, due_date, return_date)
            VALUES (OLD.student_num, OLD.out_date, OLD.due_date, NEW.return_date)
        END IF;
    END$$

DELIMITER ;

Bin ich immer "ein Fehler in der (my) SQL-syntax" auf der END IF und ich habe keine Ahnung, warum. Jede Hilfe wird sehr geschätzt!

Schreibe einen Kommentar