如何使用 knex.js 和 MySQL 自动更新记录

How to auto update record with knex.js and MySQL

这是我的第一个post,所以如果我有什么不对的地方请指正。
我在 MySQL 中有一些 tables 有 updated_at 列,我想在 tables 更新时更新它的值。它与这样解决的this problem非常相似:

const ON_UPDATE_TIMESTAMP_FUNCTION = `
  CREATE OR REPLACE FUNCTION on_update_timestamp()
  RETURNS trigger AS $$
  BEGIN
    NEW.updated_at = now();
    RETURN NEW;
  END;
$$ language 'plpgsql';
`

const DROP_ON_UPDATE_TIMESTAMP_FUNCTION = `DROP FUNCTION on_update_timestamp`

exports.up = knex => knex.raw(ON_UPDATE_TIMESTAMP_FUNCTION)
exports.down = knex => knex.raw(DROP_ON_UPDATE_TIMESTAMP_FUNCTION)

否则,链接问题是由 Postgres 造成的,我的 RDB 是 MySQL,所以我想知道是否有办法用 MySQL 来解决这个问题。 我尝试过类似的方法,但那样我就无法动态地更改 table:

const CUSTOM_FUNCTIONS = `
ALTER TABLE NEW
    CHANGE updated_at
        updated_at TIMESTAMP NOT NULL
            DEFAULT CURRENT_TIMESTAMP
            ON UPDATE CURRENT_TIMESTAMP;
`

const DROP_CUSTOM_FUNCTIONS = `
DROP FUNCTION on_update_timestamp;
`

exports.up = async (knex) => knex.raw(CUSTOM_FUNCTIONS);
exports.down = async (knex) => knex.raw(DROP_CUSTOM_FUNCTIONS);

我测试了 this 解决方案,它对我有用。它不是最好的,但对于我的项目来说已经足够了。 基本上,当我更新我的记录时,我的控制器会自动用当前日期更新 updated_at 列。