在未触发之前插入MySQL触发器

时间:2015-02-14 16:21:36

标签: mysql triggers

我正在尝试为审核添加触发器以初始化插入的日期时间字段。有没有人看到可能导致此触发器触发的原因???

USE example;

CREATE TABLE USERS (
    ID  INT UNSIGNED NOT NULL AUTO_INCREMENT,
    FULLNAME    VARCHAR(128) NOT NULL,
    `PASSWORD`  CHAR(88) NOT NULL,
    EMAIL   VARCHAR(128) NOT NULL,
    FLAGS   TINYINT UNSIGNED DEFAULT 0,
    CREATED DATETIME,
    UPDATED TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE INDEX(EMAIL),
    PRIMARY KEY( ID )
);

DELIMITER $$;
CREATE TRIGGER USER_T BEFORE INSERT ON USERS FOR EACH ROW 
BEGIN 
    SET NEW.CREATED = CURRENT_TIMESTAMP();
END;$$
DELIMITER ;

INSERT INTO USERS(FULLNAME, `PASSWORD`, EMAIL) VALUES('Admin', 'sQnzu7wkTrgkQZF+0G1hi5AI3Qmzvv0bXgc5THBqi7mAsdd4Xll27ASbRt9fEyavWi6m0QP9B8lThf+rDKy8hg==', 'root@localhost');

1 个答案:

答案 0 :(得分:1)

看起来您在这里使用;作为分隔符

 SET NEW.CREATED = CURRENT_TIMESTAMP();
END;$$
DELIMITER ;

试试这个:

DELIMITER $$;
CREATE TRIGGER USER_T BEFORE INSERT ON USERS FOR EACH ROW 
BEGIN 
    SET NEW.CREATED = CURRENT_TIMESTAMP();
END $$
DELIMITER ;