【发布时间】:2013-12-05 12:40:59
【问题描述】:
我有一组表,它们使用鉴别器列来区分实体类型。这些表中的某些表描述了定义的实体组之间的关系或包含特定类型实体的更多信息。我想对表中的数据进行完整性检查。最初这些是作为检查编写的,但 postgres 不能很好地处理备份中的表排序,所以我想将检查重写为触发器,以便在恢复数据库时可以关闭触发器。
由于实体的实际列名会从一个表更改为另一个表,并且我想以 DRY 方式进行,因此我尝试编写一个将实体的 id 作为参数并验证它的触发函数是正确的类型。
我正在尝试调用一个带参数的函数触发器
c.is_earth_based_measurement_tg(bigint).
实际的触发器是这样写的:
CREATE TRIGGER earth_based_measurement_locations_tg1
BEFORE INSERT OR UPDATE
ON measurements.earth_based_measurement_locations
FOR EACH ROW
EXECUTE PROCEDURE c.is_earth_based_measurement_tg(NEW.fk_measurement);
当我尝试保存触发器时,我收到“错误:“。”或附近的语法错误,指的是 NEW.fk_measurement。编写此触发器的正确方法是什么?
谢谢。
【问题讨论】:
标签: sql postgresql triggers hstore