Q:

mysql syntax error code 1064 unsure of what to do

Below is my mysql code, i keep getting a syntax code for the last line, i have no idea what to do ive been trying all sorts of stuff the past 2 hours, anyone got any idea?
CREATE TABLE audit (
audit_no INT NOT NULL AUTO_INCREMENT,
`no` INT NOT NULL,
`code` CHAR(2) NOT NULL,
module_name VARCHAR(30) NOT NULL,
student_name VARCHAR(60) NOT NULL,
old_grade TINYINT NOT NULL DEFAULT 0,
new_grade TINYINT NULL DEFAULT NULL,
changed_by VARCHAR(40) NOT NULL,
changed_on_device VARCHAR(40) NOT NULL,
change_date DATE NOT NULL,
change_time TIME NOT NULL,
PRIMARY KEY (audit_no),
CONSTRAINT audit UNIQUE (audit_no));

DROP TRIGGER IF EXISTS grade_changes;
CREATE TRIGGER grade_changes

AFTER UPDATE ON take FOR EACH ROW
BEGIN
IF NEW.grade != OLD.grade THEN
INSERT INTO audit (`no`, `code`, module_name, student_name, old_grade, new_grade, changed_by, change_date, change_time)
VALUES (NEW.`no`, NEW.`code`, NEW.student_name, NEW.module_name, OLD.grade, NEW.grade, current_user(), current_date(), current_time());

END IF;

END;

Here is the error message;
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 7
edit
i understand that the error does say what lne it is and that it says that the issues is the '', but i dont understand what's wrong with them as i've even tried to remove them but the problem presists.

A:

You have to add DELIMITER like tobefore decalring the trigger 
Like
CREATE TABLE audit (
audit_no INT NOT NULL AUTO_INCREMENT,
`no` INT NOT NULL,
`code` CHAR(2) NOT NULL,
module_name VARCHAR(30) NOT NULL,
student_name VARCHAR(60) NOT NULL,
old_grade TINYINT NOT NULL DEFAULT 0,
new_grade TINYINT NULL DEFAULT NULL,
changed_by VARCHAR(40) NOT NULL,
changed_on_device VARCHAR(40) NOT NULL,
change_date DATE NOT NULL,
change_time TIME NOT NULL,
PRIMARY KEY (audit_no),
CONSTRAINT audit UNIQUE (audit_no));

DELIMITER //
DROP TRIGGER IF EXISTS grade_changes;
CREATE TRIGGER grade_changes

AFTER UPDATE ON take FOR EACH ROW
BEGIN
  IF NEW.grade != OLD.grade THEN
   INSERT INTO audit (`no`, `code`, module_name, student_name
      , old_grade, new_grade, changed_by, change_date, change_time)
   VALUES (NEW.`no`, NEW.`code`, NEW.student_name, NEW.module_name
    , OLD.grade, NEW.grade, current_user(), current_date(), current_time());

  END IF;

END;
DELIMITER ;

