示例代码: https://gist.github.com/telagraphic/be35fd3506f912c7a91c使用情况发现外键与触发器或函数
我有一个投掷的列的数据类型约束的触发器。 有道理,为什么它会抛出错误,但我认为触发器会在插入之前更新值。
我发现了在插入中使用函数来检索外键的替代解决方案。
我的问题是有可能使用触发器来查找和插入外键?或者是一个函数的首选方法?
示例代码: https://gist.github.com/telagraphic/be35fd3506f912c7a91c使用情况发现外键与触发器或函数
我有一个投掷的列的数据类型约束的触发器。 有道理,为什么它会抛出错误,但我认为触发器会在插入之前更新值。
我发现了在插入中使用函数来检索外键的替代解决方案。
我的问题是有可能使用触发器来查找和插入外键?或者是一个函数的首选方法?
看着你的代码,我想你正在试图将INSERT的类别字段填充到EXPENSES表中,这是基于CATEGORIES表中使用类别名称的ID。
如果我明白这个权利,那么你应该在你的解决方案中使用该函数而不是触发器。当在表上执行DML语句(INSERT,UPDATE,DELETE)时(这里是CATEGORIES表),触发器只会被调用或触发。由于您插入到EXPENSES表中,CATEGORIES表上的触发器将不会被调用。
此外,通常您通常在关系中的父表上使用触发器来更新/填充该关系中的子表。我认为在你的情况下,你正在尝试做相反的事情,因为看起来费用是CATEGORY_ID字段上的CATEGORIES的孩子。
希望这会有所帮助。
谢谢,这确实说明了。这是两张桌子之间的一对一关系。亲子关系有助于解释为什么要使用触发器。 – nick