java - 数据库触发器在集成测试中不起作用
问题描述
我创建了数据库触发器来管理我的 Postgres 模式中为我的 Spring 引导应用程序创建和更新的时间戳。当我运行集成测试时,我看到创建和更新的字段没有被触发器更改并且仍然为空。我正在使用 docker-compose 运行我的集成测试。我使用 Flyway 管理表版本控制和迁移。我最初创建了表,稍后使用另一个迁移脚本添加了触发器(如下所述)。有没有办法测试触发功能或我的触发功能有什么问题?
下面是触发函数:
CREATE OR REPLACE FUNCTION set_created_updated_dates()
RETURNS TRIGGER AS
$$
BEGIN
IF (TG_OP = 'INSERT') THEN
NEW.created := CURRENT_TIMESTAMP;
NEW.updated := CURRENT_TIMESTAMP;
ELSIF (TG_OP = 'UPDATE') THEN
NEW.updated := CURRENT_TIMESTAMP;
END IF;
RETURN NEW;
END;
$$
LANGUAGE plpgsql;
routings 是我的表的名称:
CREATE TRIGGER routings_set_created_updated_dates
BEFORE INSERT OR UPDATE
ON routings
FOR EACH ROW
EXECUTE PROCEDURE set_created_updated_dates();
这是我的码头工人撰写文件:
version: '3'
services:
mockserver:
image: "artifactory.random/docker/jamesdbloom/mockserver:mockserver-5.5.1"
ports:
- 1080
database:
image: postgres:10.5
environment:
- POSTGRES_DB=test
- POSTGRES_USER=test
- POSTGRES_PASSWORD=test123
ports:
- 5432
解决方案
推荐阅读
- ruby - Windows 安装 Squib 时无法构建 gem 原生扩展
- c++ - 创建结构数组时遇到分段错误
- mysql - mysql 给我一个错误的 IF 我该怎么办?
- java - java.lang.ClassNotFoundException - 带有 OpenCV 的 Eclipse
- javascript - 试图在 JS 中查找缺失的声明/语句
- python - 等待 docker 容器运行状况检查成功后再分离
- mongodb - 如何根据嵌入的对象键值查找文档?
- jquery - id 已添加但未删除
- sql - 使用 oracle SQL 连接来自同一列的 2 个值
- python - 如何从失败的 SQLAlchemy 提交中恢复?