biz*_*dee 0 t-sql sql-server-2012
我有一组表,我正在尝试为表设置正确的关系.浓缩版本如下.
Users
ID INT NOT NULL
Activities
ID INT NOT NULL
UserID INT NULL
Logs
ID INT NOT NULL
UserID INT NULL
ActivityID INT NULL
Run Code Online (Sandbox Code Playgroud)
我有与关系UserID从两个Activities和Logs回Users.ID并ActivityID与回Activities.ID.
我已设置Activities.UserID并Logs.UserID在删除时设置null,并在更新时级联.当我尝试将相同的更新和删除功能设置为Logs.ActivityID但我得到关于"可能导致循环或多个级联路径"的错误时,我的问题就来了.我的问题是,Logs需要一个用户,并且不需要Activity,但是,如果和更改Logs,确实Activity需要更新Activity.
我有什么方法可以不涉及两个单独的Logs表,并且不涉及手动更新Logs表.这在SQL Server 2012中甚至可能吗?
SQL Server不支持多个级联路径.您可以选择解决此限制:
编写自己的逻辑来处理多个级联路径(推荐).
更改您的架构,以便不需要多个级联路径.
等待SQL Server修复此问题.不要屏住呼吸 - 多年来这一直是一种限制.请参阅以下连接项:
一个.http://connect.microsoft.com/SQLServer/feedback/details/126159/cascade-updates
b.http://connect.microsoft.com/SQLServer/feedback/details/307723/allow-multiple-cascade-paths-for-foreign-key-and-on-dalete-update-cascade
请注意他们如何继续说"我们现在没时间做这件事;我们会考虑下次发布"吗?这不是销售软件的那种东西,因为人们对 - 通常 - 对编码逻辑本身感到满意.
迁移到支持多个级联路径的数据库平台(听起来你觉得你有很多选择,但我不认为你这样做,我不知道你通过切换牺牲了什么,甚至不知道移植你的架构和码).
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |