postgresql - 使用 knex.js 触发器创建 Postgres 以在更新表后更新时间
问题描述
我有一个包含 id、username、job、job_id、created_at 和 updated_at 列的表。我使用 knex.js 创建表,如果表有任何修改,我希望表捕获时间,例如,如果从前端更新列作业,则列 updated_at 应该存储时间列已更新。
我是 Postgres 触发器的新手,但我试图实现这一点;
const FUNCTION_NAME = 'on_time_update';
CREATE OR REPLACE FUNCTION ${FUNCTION_NAME}()
RETURNS TRIGGER AS
$BODY$
BEGIN
NEW.updated_at = now();
RETURN NEW
END;
$BODY$ LANGUAGE PLPGSQL;
export async function up(knex: Knex): Promise<void> {
await knex.raw(createOnUpdateTrigger('jobs', FUNCTION_NAME));
}
export async function drop(knex: Knex): Promise<void> {
await knex.raw(dropTrigger('jobs', FUNCTION_NAME));
}
使用 knex,我创建了一个触发器;
createOnUpdateTrigger: (name, table, procedure) => `
CREATE TRIGGER ${name}
BEFORE UPDATE on ${table}
FOR EACH ROW
EXECUTE PROCEDURE ${procedure}();
`
dropTrigger: (name, table) => `
DROP TRIGGER ${name} ON ${table};
`
通过这样做,我能够成功创建迁移,但我的列没有被更新,我也没有收到错误。我不确定我做错了什么。任何帮助将不胜感激,因为我是新手!谢谢!
解决方案
推荐阅读
- c# - 如何计算机器人在 C# 控制台中访问的唯一方块
- python - 为每个特定时间执行特定任务并等待其时间(Python)
- python-2.7 - 为什么我的关系在我的对象与 sale_order 对象中不起作用
- javascript - 根据单元格内容添加具有功能的复制按钮
- wordpress - 如何从 wordpress 搜索中排除特定短语
- git - git冲突后恢复项目
- java - Netbeans 9 - 打印 Unicode 字符
- ios - 对字典数组(或自定义模型对象数组)进行排序,将所有可选值对象保留在数组末尾
- javascript - 替换对象数组
- node.js - 将经过 Firebase 身份验证的用户信息(例如 FirstName、LastName、Gender 等)存储到我们自己的数据库中