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!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese, Sie sind das fehlende Semikolon in Ihrer syntax und Trennzeichen
end if
DROP IF EXISTS
Aussage, die ich nur übersehen es in meine Frage.Erstellte ich ein tool namens cdc_audit, dass automatisiert die Erstellung von audit-Tabellen in der mysql-für einzelne oder alle Tabellen und sogar bewahrt bereits bestehende löst. Vielleicht haben Sie oder jemand finden es nützlich
Funktionen
Update: hier ist ein Beispiel, mit dem Darlehen obigen Tabelle in eine test-Datenbank mit dem Namen stackoverflow.
Lassen Sie uns nun führen Sie das sql zum erstellen von audit-Tabelle plus-Trigger in der DB.
das ist es. Audit-Tabelle plus Trigger sind vorhanden.
Wenn Sie neugierig sind, können wir prüfen die Umsetzung.