1
1
这种数据完整性验证很难以健壮和高效的方式实现。
首先,很大程度上取决于重叠范围的定义。例如,可以争辩说,您的所有示例数据范围都是无效的:
因此,一旦你理清了你的业务逻辑,就有了实现它们的问题。在甲骨文中,我们可以用复合触发器来做一些事情。对于每一行,我们将插入/更新行的ID存储在一个数组中。然后在语句的末尾,我们循环遍历数组并以交叉连接的形式查询表,以比较日期范围。
此触发器不尝试处理多用户方案。老实说,我们没什么办法阻止两个不同的会话产生重叠范围。唯一能保证的就是锁上整张桌子,但这可能并不可取。 如果你感兴趣,我已经发布了一个关于Oracle LiveSQL的演示(需要免费登录,抱歉!). Find it here. |
2
0
您需要为此使用触发器或用户定义的函数。
简单的
两者的确切语法取决于数据库——您已经指定了其中的两个——所以更详细的答案是不可行的。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |