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

ロギング目的でユーザーとタイムスタンプを自動的に設定したい。挿入の前にトリガーが 1 つあります (実際には、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 だけのトリガーは本当に必要ありません。DEFAULT USER() のようなもので CHANGE_USER を設定する可能性はありますか? または、追加のトリガーを作成する必要がありますか?

4

1 に答える 1

1

MySQL では、列のデフォルト値として関数を使用することはできません。キーワードNULLCURRENT_TIMESTAMPおよびを使用できますが、関数を使用することはできません (内部的に のシノニムとして表されることをlocaltimestamp除く)。now()CURRENT_TIMESTAMP

したがって、あなたの場合に従う方法は、トリガー ON 挿入です...追加のトリガーが必要です。

于 2012-07-01T12:16:34.177 に答える