sql - SQL (Oracle) - 如果在同一个表的另一列中输入包含特定值的数据,如何强制一列中的值为 NULL?
问题描述
我试图弄清楚如果在另一列中输入了特定值,您将如何将表中的某个列设置为 NULL 或特定字符串(如“N/A”)。
我正在为教师创建一个表,每个教师都有一个主管 ID(即与另一位直接上司的教师相关的 ID),但我不希望校长能够有一个主管。我将如何创建一个约束或方法,以便如果表中另一列的值 - “teacherRole”作为“校长”插入,您将无法为该个人提供主管 ID,并将其设置为 NULL?
即 IF teacherRole = "校长" SET supervisorID = NULL
另外,我正在使用另一个约束,因此“teacherRole”只能是选定数量的值之一,例如“PE Teacher”或“Maths Teacher”,并且想确保另一个约束不会与此冲突?
解决方案
为了防止这种情况,您可以向表中添加检查约束:
alter table mytable
add constraint mytable_chk1
check (not (teacherRole = 'Head Teacher' and supervisorID is not NULL));
然后,如果有人尝试插入或更新一行以验证约束,他们将引发异常。
推荐阅读
- c# - 我无法在 azure bot 默认答案中以超链接的形式编写文本,该机器人在 MS 团队中工作,但它只显示文本
- flutter - 主类中的错误:对空值使用空检查运算符
- javascript - React 渲染对象不可扩展
- aws-mediapackage - AWS Elemental MediaPackage 时移不工作 404 错误
- git - 带有自定义电源外壳合并驱动程序的“错误:add_cacheinfo 无法刷新路径”
- node.js - 忽略来自不同客户端对 Cassandra 中同一行的写入查询
- git - VS Code 1.57版(2021年5月发布)检测不到git SCM
- java - 在片段android中初始化视图元素私有
- git - 第一次推送到 Gitlab 时得到![remote denied] development -> development (pre-receive hook denied)
- autodesk-forge - 要上传到 Autodesk Forge 的文件格式