我正在学习如何在Java中使用ORM和Postgres,我想在表列date
中维护一条记录,该记录将保持以下格式:
2022-05-28T21:12:01.000Z
所以我看到两条路:
- 创建Postgres Insert触发器
- 只关心dao逻辑中的日期insertint
Second对我来说很直观,但我应该选择什么?也许飞行通道迁移在这里可能有用?
编辑:我在评论中说过Postgres以二进制格式保存日期,所以我会处理这个问题。但自动插入"日期"对我来说仍然不清楚
提前感谢!
通常建议将所有DB中的日期类型存储为日期类型,而不是字符串。因为日期类型有一个内部结构,您可以以任何格式向用户显示这些数据。例如:13 September 2022
或13.09.2022
或2022-09-13T12:24:45
等。您可以使用此字段的所有日期函数,例如:年份>2022等。所有这些都不取决于我们使用DB触发器或Java DAO这一事实。
但是,触发它的是,例如,当有一个插入数据到一个表中时,我们想要更改另一个表或同一个表的另一条记录。我们有两种方法:
- 使用PostgreSQL触发器执行此操作
- 要在后端执行此操作(Java dao逻辑(
选项1-不推荐使用。因为触发器将始终运行,即使我们将执行任何用于导入数据的SQL命令。或者在未来,我们可能需要不同的业务逻辑,例如:对于某些记录,我们不需要更改另一个记录。
选项2-推荐。因为我们所有的业务逻辑都将存储在后端。如果在插入之前需要更改另一条记录,我们将编写更改代码。在哪里没有,但我们不会使用更改代码。
但有时,在插入数据之前,您总是(必然(需要更改另一条记录。在这种情况下,建议使用触发器,因为您突然忘记在某个地方编写更改代码。无论是什么,触发器都会一直工作