gpt4 book ai didi

oracle - 改变表检查约束

转载 作者:行者123 更新时间:2023-12-04 02:55:31 24 4
gpt4 key购买 nike

错误从命令中的第 35 行开始:

ALTER TABLE lee_person
ADD CONSTRAINT check_person_type
CHECK(CASE WHEN UPPER(person_type) = 'EMPLOYEE'
THEN employment_date IS NOT NULL
AND manager_id IS NOT NULL
WHEN UPPER(person_type) = 'CLIENT'
THEN employment_date IS NULL
AND manager_id IS NULL
END)

错误报告:

SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
*Cause:
*Action:

最佳答案

您不能像尝试那样使用 CASE (CASE WHEN condition-A THEN condition-B AND condition-C)。

您似乎想要执行以下操作:

  1. 如果 person_typeemployee(不区分大小写),employment_datemanager_id 必须是不为空

  2. 如果 person_typeclient(不区分大小写),employment_datemanager_id 必须是NULL

如果是这种情况,请尝试以下操作:

ALTER TABLE lee_person
ADD CONSTRAINT check_person_type
CHECK ( (UPPER(person_type) = 'EMPLOYEE' AND
employment_date IS NOT NULL AND
manager_id IS NOT NULL)
OR (UPPER(person_type) = 'CLIENT' AND
employment_date IS NULL AND
manager_id IS NULL)
)

我已经测试过了,它有效。

请注意,它允许的唯一 person_type 值是 employeeclient(不区分大小写)。如果您想允许其他类型(有或没有 employment_datemanager_id 限制),您需要添加额外的OR 条件。

关于oracle - 改变表检查约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com