You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中如何添加OR逻辑非空约束:需填个人或工作号码

Oracle SQL实现“二选一非空”约束的正确方法

你原来的语句错误原因:MODIFY子句只能给单个列添加NOT NULL列级约束,无法实现跨列的OR逻辑判断,因此触发ORA-00907语法错误。要实现“个人号码或工作号码至少填写其一”的需求,需要使用CHECK表级约束。

正确语句示例

推荐:添加命名约束(便于后续维护)

ALTER TABLE user_data
ADD CONSTRAINT chk_user_number_required
CHECK (personal_number IS NOT NULL OR work_number IS NOT NULL);

简化:添加匿名约束(不推荐,不利于后续管理)

ALTER TABLE user_data
ADD CHECK (personal_number IS NOT NULL OR work_number IS NOT NULL);

注意事项

  • 约束生效后,插入或更新记录时如果personal_number和work_number同时为空,Oracle会抛出违反约束的错误。
  • 若字段类型为CHAR,Oracle会将空字符串('')视为NULL,无需额外处理空字符串的情况。

内容的提问来源于stack exchange,提问作者SunnyDays

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:41:27