0

我有这个 MySQL 表:

create table test.customer (
 ID             INTEGER,
 CREATION_TIME  DATETIME,
 CREATION_USER  VARCHAR(50),
 CHANGE_TIME    TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 CHANGE_USER    VARCHAR(50),
 PRIMARY KEY(ID)
);

我想自动设置用户和时间戳以进行日志记录。我在插入之前确实有一个触发器(实际上只为creation_time编写):

delimiter #
create trigger test.customer_creation 
before insert on test.customer 
for each row 
begin
 set NEW.CREATION_TIME = NOW();
 IF (NEW.CREATION_USER is null or NEW.CREATION_USER = '') 
 THEN set NEW.CREATION_USER = USER(); 
 end IF;
end #
delimiter ;

但我真的不想要一个只针对 CHANGE_USER 的触发器。是否有可能设置 CHANGE_USER 类似于:DEFAULT USER()?还是我必须创建一个额外的触发器?

4

1 回答 1

1

在 MySQL 中,您根本不能使用函数作为列的默认值,您可以使用关键字:和NULL,而您不能使用函数(除了在内部表示为 的同义词)。CURRENT_TIMESTAMPlocaltimestampnow()CURRENT_TIMESTAMP

所以在你的情况下,要遵循的方法是触发器 ON insert ...你需要额外的触发器。

于 2012-07-01T12:16:34.177 回答