Mysql 如何确定是否在";中的Update语句中传递了列值;更新前“;触发
我希望我的触发器能够确定在update语句中是否为字段分配了值,这样,如果没有,我就可以分配值 我看了下面的文章,它也谈到了同样的事情,但它没有说明是否有办法确定是否有一个值被传递到Update语句中 这里有一个例子。我有一张桌子:Mysql 如何确定是否在";中的Update语句中传递了列值;更新前“;触发,mysql,triggers,Mysql,Triggers,我希望我的触发器能够确定在update语句中是否为字段分配了值,这样,如果没有,我就可以分配值 我看了下面的文章,它也谈到了同样的事情,但它没有说明是否有办法确定是否有一个值被传递到Update语句中 这里有一个例子。我有一张桌子: CREATE TABLE Business ( BusinessId INT NOT NULL AUTO_INCREMENT, Name VARCHAR(40) NOT NULL, IsActive TINYINT UNSIGNED
CREATE TABLE Business (
BusinessId INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(40) NOT NULL,
IsActive TINYINT UNSIGNED DEFAULT NULL,
UpdateUser VARCHAR(66) DEFAULT NULL,
UpdateDate DATETIME(3) DEFAULT NULL,
PRIMARY KEY (BusinessId)
);$$
我在那个表上有一个更新前触发器
如果Update语句中没有指定UpdateUser和UpdateDate,那么我想在触发器中将这些值设置为USER()和NOW()
我的业务表中的记录3如下所示:
BusinessId = 3
Name = 'Geronimo'
IsActive = 1
UpdateUser = 'Susie'
UpdateDate = '2019-04-30 09:14'
以下是我的更新声明:
更新业务集名称='Test',其中BusinessId=3
在我的触发器中,NEW.UpdateUser='Susie'和OLD.UpdateUser='Susie'。
同样,NEW.UpdateDate='2019-04-30 09:14'和OLD.UpdateDate='2019-04-30 09:14'
因此,如果在Update语句中未指定UpdateUser时NEW.UpdateUser始终等于OLD.UpdateUser,我如何知道是同一用户更新了记录,还是该用户没有传递到Update语句中
在我的示例中,这两条update语句产生相同的触发器结果:
Update Business Set Name = 'Test' Where BusinessId = 3;
及
但是我希望第一个update语句将UpdateUser设置为USER()。第二个update语句将UpdateUser设置为“Susie”
SQL Server没有问题,但在MySQL中,我还没有找到一种方法来做到这一点
Update Business Set Name = 'Test', UpdateUser='Susie' Where BusinessId = 3;