如何创建计算值的Postgres触发器

时间:2017-03-18 15:52:24

标签: postgresql triggers postgresql-9.6

如何创建一个触发器,使用要插入的行的值首先计算,以便插入的值被转换?

假设我有这张表labor_rates

+---------------+-----------------+--------------+------------+
| labor_rate_id | rate_per_minute | unit_minutes | created_at |
+---------------+-----------------+--------------+------------+
| bigint        | numeric         | numeric      | timestamp  |
+---------------+-----------------+--------------+------------+

每次创建新记录时,我都需要将费率计算为rate/unit(这里的最小单位是一分钟)。

例如,插入新记录时:

INSERT INTO labor_rates(rate, unit)
VALUES (60, 480);

它会创建一个包含以下值的新记录:

+---------------+-----------------+--------------+----------------------------+
| labor_rate_id | rate_per_minute | unit_minutes |         created_at         |
+---------------+-----------------+--------------+----------------------------+
|       1000000 |          1.1979 |           60 | 2017-03-16 01:59:47.208111 |
+---------------+-----------------+--------------+----------------------------+

有人可能会争辩说,这应该保留为计算字段而不是存储计算值。但在这种情况下,最好是存储计算值。

我对触发器相当新,所以任何帮助都会非常感激。

0 个答案:

没有答案