Mysql 如何确定是否在";中的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

我希望我的触发器能够确定在update语句中是否为字段分配了值,这样,如果没有,我就可以分配值

我看了下面的文章,它也谈到了同样的事情,但它没有说明是否有办法确定是否有一个值被传递到Update语句中

这里有一个例子。我有一张桌子:

    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;