当前位置: 首页 > 面试题库 >

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

符畅
2023-03-14
问题内容

我知道SQL约束会强制数据满足有效性标准。但是,诸如“仅在’finallyed’标志为假时才可以更新学生的成绩”之类的标准呢?应用程序是否必须处理此类更新条件?


问题答案:

简短的答案:不,当Finalized为’true’时,SQL约束本身不能阻止对列Grade的更改(但允许其他更改)。

有几种SQL约束:CHECK,DEFAULT,NOT
NULL,UNIQUE,主键和外键。

这些中的每一个都可以单独或组合限制或影响列的值,但不能阻止对允许值的UPDATE。特别是,这些约束都不能阻止基于“等级”和“完成”的先前值对“等级”和/或“完成”进行更新。

UPDATE触发器可以做到这一点:比较Grade的新值和旧值,如果这些值不同且Finalized =’true’,则使用说明性错误消息回滚UPDATE。

但是,应用程序可以并且应该更优雅地实施这种“业务规则”。规则本身可以对何时可以更改Finalized值进行一些说明。例如,是否可以同时更改成绩并设置Finalized
=’false’?触发逻辑可以处理此类详细信息,因此将其安装为故障保护是合理的,同时还要在应用程序的某个位置(前端/中间件/后端)明确显示规则。



 类似资料:
  • 问题内容: 我们有一个用户表,每个用户都有一个唯一的电子邮件和用户名。我们尝试在我们的代码中执行此操作,但是我们希望确保用户不会以相同的电子邮件用户名插入(或更新)到数据库中。我添加了一个触发器,以防止插入重复的用户。 但是对于更新触发器,我不知道如何执行此操作。我在Google上找到了以下示例:http : //www.devarticles.com/c/a/SQL- Server/Using-

  • 问题内容: 当我使用maven- hibernate3-plugin(又名hbm2ddl)生成数据库架构时,它会创建许多数据库约束,并且具有难以理解的约束名称,例如。 有没有办法提供更有用的名称,例如? 如果是这样,则可以更轻松地在日志文件和其他地方(除了约束名称之外)不告诉您其他信息的地方查找问题。 问题答案: 从JPA 2.1开始,可以为外键命名。例如 只要确保在@JoinColumn中使用它

  • 问题内容: 我目前正在使用Access女士构建一个系统。由于避免sql注入很重要,因此我也想将参数程序用作VB.NET,但我想知道是否可以。如果是这样,那么如果您至少向我展示了使用参数从控件向数据库中插入数据的sql语句,我将不胜感激;如果不能,那么有人会以其他方式向我展示吗? 任何建议,我将不胜感激,谢谢.. 问题答案: 该INSERT语句在名为“ frmDatePicker”的打开表单上使用文

  • 这只是前端,而不是后端。我也承认这是个坏主意。在这一点上,我只是好奇。 我有一张记录表。我希望用户能够输入JavaScript条件语句,然后将其应用于表以过滤记录。 例如,要筛选出名称少于6个字符的记录,我可以输入:

  • 问题内容: 我可以在存储的过程中实现所需的约束,但是我想知道是否可以定义一组可以完成此工作的外键约束。 我有几个表,这些表具有以下关键关系: 我的问题是: 是否可以在同时要求BaseRFQId和SolId引用具有相同NSNId的记录的BaseRFQsSols上设置外键约束? 是否可以在RFQsSolsParts上设置外键约束,以要求SolId和PartId引用具有相同NSNId的记录, 并 要求R

  • 所以我正在学习如何使视图从屏幕外变成动画,用作滑块菜单。 我改编了这段代码,从如何在Swift中使用约束对UIView进行动画制作? 什么是自我。看法layoutIfNeeded()部分代码如何? 2.为什么在动画之前和期间编码为2x? 注:如果我注释掉第一个自我。看法layoutIfNeeded()没有任何变化,但如果我注释掉第二个self。看法layoutIfNeeded()移动不再设置动画,