加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

可以使用SQL约束来防止条件成立时更改特定值吗?

发布时间:2020-12-12 07:00:02 所属栏目:MsSql教程 来源:网络整理
导读:我知道SQL约束可以强制数据满足有效性标准.但是,诸如“学生成绩只能在’最终’标志为假”时才能更新标准呢?这样的更新标准是否必须由应用程序处理? 解决方法 简短回答:不,SQL约束本身不能阻止在Finalized为’true’时更改列级别(但允许更改). 有several ki
我知道SQL约束可以强制数据满足有效性标准.但是,诸如“学生成绩只能在’最终’标志为假”时才能更新标准呢?这样的更新标准是否必须由应用程序处理?

解决方法

简短回答:不,SQL约束本身不能阻止在Finalized为’true’时更改列级别(但允许更改).

有several kinds of SQL constraints:CHECK,DEFAULT,NOT NULL,UNIQUE,Primary Key和Foreign Key.

这些中的每一个都可以单独或组合地限制或影响列的值,但不能阻止UPDATE到允许的值.特别是,这些约束都不能阻止UPDATE根据Grade和Finalized的先前值进行评级和/或最终化.

UPDATE触发器可以执行此操作:比较Grade的新旧值,如果这些值不同并且Finalized =’true’,则使用解释性错误消息回滚UPDATE.

但是,应用程序可以而且应该更优雅地执行这样的“业务规则”.规则本身可以使用一些关于何时可以更改Finalized值的说明.例如,是否允许更改等级并同时设置Finalized =’false’?触发器逻辑可以处理这些细节,并且将其作为故障保护安装是合理的,同时使规则在应用程序(前端/中间件/后端)中的某处显式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读