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