在ibm db2数据库上,我有两个表,TABLE1和TABLE2。 我在TABLE1上也有一个逻辑文件LOGICAL1 LOGICAL1根据某些TABLE1字段的值过滤TABLE1中的记录。 (它就像一个sql视图)
我想在TABLE2和逻辑文件LOGICAL1之间添加一个外部约束。
当我尝试这样做时,我有一条错误消息SQ0157说LOGICAL1在外键子句中无效,无法在外键子句中指定逻辑文件或视图。
那么,有没有办法对过滤后的表进行约束?
答案 0 :(得分:3)
外来(引用)约束只能应用于物理表。
以下是一些文档链接以获取更多信息:
IBM i 7.1 Information Center> Database> Reference> SQL reference> Concepts> Tables> Constraints> Referential constraints
答案 1 :(得分:2)
约束意味着所有子行都有父行。
考虑在子表上编写一个触发器,该子表使用LOGICAL1来验证是否允许插入/写入。
答案 2 :(得分:1)
正如詹姆斯所指出的,FK约束仅适用于物理表。 AFAIK,此规则适用于所有RDBMS系统。
但如果你把约束放在物理上,它的效果就会在视图中看到。
查尔斯