获取当前更新的列名以在触发器中使用

Ser*_*rge 7 mysql sql triggers

有没有办法实际获取更新的列名,以便在触发器中使用它?

基本上我只是在用户插入或更新表时尝试进行审计​​跟踪(在这种情况下,它与Contact表有关)

CREATE TRIGGER `after_update_contact`
    AFTER UPDATE ON `contact` FOR EACH ROW
    BEGIN
        INSERT INTO user_audit (id_user, even_date, table_name, record_id, field_name, old_value, new_value)
        VALUES (NEW.updatedby, NEW.lastUpdate, 'contact', NEW.id_contact, [...])
    END
Run Code Online (Sandbox Code Playgroud)

如何获取已更新的列的名称,并从中获取该列的值OLDNEW值.如果连续更新了多列甚至多行,是否可以对每次更新进行审核?

Fra*_*ens 8

只需对每列使用OLD.colname <> NEW.colname来检查和查找不同的列.触发器在MySQL中的使用有点受限,太糟糕了.