Im just learning how to do triggers in mysql with php I have two versions of the trigger i would like to use but i keep getting errors saying the syntax is wrong.

the first one is:

CREATE TRIGGER credits_earned AFTER UPDATE ON takes on (grade)
REFERENCING NEW ROW AS nrow
REFERENCING OLD ROW AS orow 
FOR EACH ROW 
WHEN nrow.grade <> 'F' AND nrow.grade IS NOT NULL 
  AND (orow.grade = 'F' OR orow.grade IS NULL)
BEGIN ATOMIC 
  UPDATE student 
  SET tot_credit = tot_cred +
 (SELECT credits
  FROM course
  WHERE course.course_id = nrow.course_id)
WHERE student.id = nrow.id;

and the second one is:

DELIMITER $$

CREATE TRIGGER grade_change AFTER UPDATE on takes
FOR EACH ROW BEGIN
IF (OLD.grade='F' OR OLD.grade IS NULL) AND NEW.grade != 'F' AND NEW.grade IS NOT NULL THEN
  BEGIN
    set @c=(SELECT credits FROM course WHERE course.course_id=NEW.course_id);
    UPDATE student SET tot_cred=tot_cred+@c WHERE student.id=NEW.id;
  END;
END IF;
END$$
DELIMITER ;

I've tried entering them in phpMyAdmin and in a php script. The update statement i'm using is

$update = "update takes
          set grade = 'B'
          where grade = 'F' or null";

could someone help me with the correct way to implement the trigger.

open phpmyadmin->database->sql

paste only TRIGGER CODE NOT DELIMITER LINES in sql textarea

CREATE TRIGGER grade_change AFTER UPDATE on takesFOR EACH ROW BEGINIF (OLD.grade='F' OR OLD.grade IS NULL) AND NEW.grade != 'F' AND NEW.grade IS NOT NULL THEN  BEGIN    SET @c=(SELECT credits FROM course WHERE course.course_id=NEW.course_id);    UPDATE student SET tot_cred=tot_cred+@c WHERE student.id=NEW.id;  END;END IF;END$$

at the bottom of sql textarea you will find delmiter field, there repalce ; with $$

then execute.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.