![]() |
1
24
由于检查约束不能基于查询,有三种基本方法可以解决此类问题。 选项1:触发器
选项2:物化视图
选项3:更改数据模型 如果表a中的某个值依赖于表B中的某个限制,则可能表示B中的限制应该是表a的一个属性(而不是表B的一个属性或除了表B之外的属性)。当然,这取决于数据模型的具体情况,但通常值得考虑。 |
![]() |
2
7
不很遗憾,检查约束不能包含子查询-请参阅 documentation |
![]() |
3
2
您正在寻找的特性称为SQL断言, and it's not yet implemented in Oracle 12c |
![]() |
4
1
贾斯汀的回答有一些好主意。另一种方法是用一个包(TAPI,如果您愿意的话)包装表的所有插入/更新,并在其中实现检查。您需要确保所有应用程序都使用您的TAPI。您还需要实现一些自定义锁定,以保护约束不受并发活动的影响。 |
![]() |
5
0
您可能需要创建触发器并使用
|
![]() |
maddy · 如何根据oracle SQL中的某一列值进行排名 2 年前 |
![]() |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
![]() |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
![]() |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
![]() |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 3 年前 |
![]() |
Anar · Oracle SQL用户定义函数 3 年前 |
![]() |
user1312312 · 如何为一组表编写通用触发器? 3 年前 |