views:

27

answers:

1

Is the syntax written in descrition is correct for MySQL Triggers? will it work?

CREATE OR REPLACE TRIGGER myTableAuditTrigger
  2  AFTER INSERT OR DELETE OR UPDATE ON myTable
  3  FOR EACH ROW
  4  BEGIN
  5    IF INSERTING THEN
  6      INSERT INTO myTableAudit (id, Operation, NewName, NewPhone)
  7      VALUES (1, 'Insert ', :NEW.Name, :NEW.PhoneNo);
  8    ELSIF DELETING THEN
  9      INSERT INTO myTableAudit (id, Operation, OldName, OldPhone)
 10      VALUES (1, 'Delete ', :OLD.Name, :OLD.PhoneNo);
 11    ELSIF UPDATING THEN
 12      INSERT INTO myTableAudit (id, Operation,
 13                               OldName, OldPhone, NewName, NewPhone)
 14      VALUES (1, 'Update ',
 15              :OLD.Name, :OLD.PhoneNo, :NEW.Name, :NEW.PhoneNo);
 16    END IF;
 17  END;
 18  /
+2  A: 

Check the MySQL documentation for the CREATE TRIGGER statement and you'll see that multiple trigger events aren't allowed. You'll need to create separate triggers for inserting, updating and deleting. A better approach might be to use binary logging or the general query log.

outis
If I want to use the Binary Log file for the audit Trail, then how can i Do that??
OM The Eternity