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

在不触发之前插入MySQL触发器,mysql,triggers,Mysql,Triggers,我正在尝试添加一个用于审核的触发器,以初始化插入上的datetime字段。有人知道是什么原因导致这个触发器没有触发吗 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,

我正在尝试添加一个用于审核的触发器,以初始化插入上的datetime字段。有人知道是什么原因导致这个触发器没有触发吗

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');

看起来您正在使用
在此处作为分隔符

 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 ;

尝试
SET NEW.CREATED=CURRENT\u时间戳否,仍然获取datetime的空值:(就是这样,$$之前愚蠢的分号导致了这个问题。非常感谢!如果Stackoverflow允许,我也会接受。干杯。很好,我相信从mysql 5.6版开始,你不需要创建触发器来做你想做的事。mysql将在多个字段上接受
时间戳