SQL (Oracle) - 如果在同一 table 的另一列中输入包含特定值的数据,如何将一列中的值强制为 NULL?
SQL (Oracle) - How to force a value in one column to be NULL if data containing specific value is entered in another column in the same table?
我想弄清楚如果输入特定值,您将如何限制 table 中的特定列设置为 NULL 或特定字符串,如“N/A”在另一列中。
我正在为教师创建一个 table,每个教师都有一个主管 ID(即与另一位直接上司的教师相关的 ID),但我不希望班主任能够有一个主管。我将如何创建一个约束或方法,以便如果 table - “teacherRole”中另一列的值被插入为“班主任”,您将无法为这个人提供主管 ID,它将是设置为 NULL?
即IF teacherRole = "班主任" SET supervisorID = NULL
此外,我正在使用另一个约束,因此“teacherRole”只能是 select 个值之一,例如“体育老师”或“数学老师”,我想确保另一个约束不会和这个冲突吗?
看来我是傻傻的
为防止这种情况,您可以向 table:
添加一个检查约束
alter table mytable
add constraint mytable_chk1
check (not (teacherRole = 'Head Teacher' and supervisorID is not NULL));
然后,如果有人试图插入或更新一行以验证约束,他们将引发异常。
我想弄清楚如果输入特定值,您将如何限制 table 中的特定列设置为 NULL 或特定字符串,如“N/A”在另一列中。
我正在为教师创建一个 table,每个教师都有一个主管 ID(即与另一位直接上司的教师相关的 ID),但我不希望班主任能够有一个主管。我将如何创建一个约束或方法,以便如果 table - “teacherRole”中另一列的值被插入为“班主任”,您将无法为这个人提供主管 ID,它将是设置为 NULL?
即IF teacherRole = "班主任" SET supervisorID = NULL
此外,我正在使用另一个约束,因此“teacherRole”只能是 select 个值之一,例如“体育老师”或“数学老师”,我想确保另一个约束不会和这个冲突吗?
看来我是傻傻的
为防止这种情况,您可以向 table:
添加一个检查约束alter table mytable
add constraint mytable_chk1
check (not (teacherRole = 'Head Teacher' and supervisorID is not NULL));
然后,如果有人试图插入或更新一行以验证约束,他们将引发异常。