在 ibm db2 数据库上,我有两个表,TABLE1 和 TABLE2。我还有一个逻辑文件LOGICAL1在表1上LOGICAL1根据某些 TABLE1 字段的值筛选 TABLE1 中的记录。(这就像一个SQL视图)
我想在 TABLE2 和逻辑文件LOGICAL1之间添加一个外部约束。
当我尝试这样做时,我收到一条错误消息 SQ0157,说LOGICAL1在外键子句中无效,逻辑文件或视图不能在外键子句中指定。
那么,有没有办法对过滤表进行约束?
外部(引用)约束只能应用于物理表。
以下是一些文档链接,以获取更多信息:
IBM i 7.1 信息中心> 数据库
约束意味着所有子行都有一个父行。
请考虑在子表上写入一个触发器,该触发器使用 LOGICAL1 来验证是否允许插入/写入。
正如 James 指出的,FK 约束仅适用于物理表。 AFAIK,此规则适用于所有RDBMS系统。
但是,如果您将约束放在物理上,则其效果将在视图中看到。
查尔斯