Jonathan Delgado
Jonathan Delgado

Reputation: 105

Trigger not working as expected

I trying execute an trigger on mysql database. The command executes successfully, but the trigger not working.

DELIMITER #

CREATE TRIGGER generate_coupon AFTER INSERT ON order
FOR EACH ROW
BEGIN

DECLARE userid, couponvalue INT;
DECLARE couponcode VARCHAR;
SELECT idUser INTO userid FROM indication WHERE email = NEW.email;
SET couponvalue = 20;
SET couponcode = 'abc123';

INSERT INTO coupon(idUser,idOrder,couponvalue,couponcode) values(userid, NEW.id, couponvalue, couponcode);

END# 

DELIMITER ;

Upvotes: 1

Views: 220

Answers (1)

eggyal
eggyal

Reputation: 125985

I suspect your problem arises from the collisions between your variables couponvalue and couponcode with the same-named columns in your coupon table. As documented under Local Variable Scope and Resolution:

A local variable should not have the same name as a table column.

You could simplify your trigger to the following and, in so doing, avoid this problem entirely:

CREATE TRIGGER generate_coupon AFTER INSERT ON order FOR EACH ROW
  INSERT INTO coupon
    (idUser, idOrder, couponvalue, couponcode)
  SELECT idUser, NEW.id, 20, 'abc123'
  FROM   indication
  WHERE  email = NEW.email
;

Upvotes: 1

Related Questions