![]() |
1
1
这种数据完整性验证很难以健壮和高效的方式实现。
首先,很大程度上取决于重叠范围的定义。例如,可以争辩说,您的所有示例数据范围都是无效的:
因此,一旦你理清了你的业务逻辑,就有了实现它们的问题。在甲骨文中,我们可以用复合触发器来做一些事情。对于每一行,我们将插入/更新行的ID存储在一个数组中。然后在语句的末尾,我们循环遍历数组并以交叉连接的形式查询表,以比较日期范围。
此触发器不尝试处理多用户方案。老实说,我们没什么办法阻止两个不同的会话产生重叠范围。唯一能保证的就是锁上整张桌子,但这可能并不可取。 如果你感兴趣,我已经发布了一个关于Oracle LiveSQL的演示(需要免费登录,抱歉!). Find it here. |
![]() |
2
0
您需要为此使用触发器或用户定义的函数。
简单的
两者的确切语法取决于数据库——您已经指定了其中的两个——所以更详细的答案是不可行的。 |
![]() |
maddy · 如何根据oracle SQL中的某一列值进行排名 2 年前 |
![]() |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
![]() |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
![]() |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
![]() |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 3 年前 |
![]() |
Anar · Oracle SQL用户定义函数 3 年前 |
![]() |
user1312312 · 如何为一组表编写通用触发器? 3 年前 |