作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我什至不确定如何为这个问题命名。我仍然是数据库的新手。这是我的情况。
我有一个交集表,
相交(foo_id, bar_id)
foo(foo_id, alpha_fk)
bar(bar_id, alpha_fk)
阿尔法(alpha_id)
当我将 (foo_id, bar_id) 插入相交表时,我需要确保 foo.alpha_pk = bar.alpha_pk 对于给定的 foo_id 和 bar_id。
我不太确定验证这一点的最佳方法。感谢您的协助!
最佳答案
创建一个 bool 函数,返回 alpha_fk 是否与给定的 foo_id 和 bar_id 匹配:
CREATE OR REPLACE FUNCTION check_intersections_fooequalsbar(foo_id integer, bar_id integer)
RETURNS boolean AS
$$
SELECT (f.alpha_fk = b.alpha_fk)
FROM foo f
LEFT JOIN bar b ON b.bar_id = $2
WHERE f.foo_id = $1 FOR UPDATE
$$
LANGUAGE 'plpgsql'
然后在约束中将函数应用于相交表
ALTER TABLE intersect
ADD CONSTRAINT check_intersections_fooequalsbar CHECK
(check_intersections_fooequalsbar(foo_id, bar_id))
关于sql - 入境验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23750328/
我是一名优秀的程序员,十分优秀!