sql - Oracle SQL - 检查约束

标签 sql oracle ddl check-constraints

此检查约束对我不起作用:

ALTER TABLE tab1
ADD CONSTRAINT CHK1 CHECK 
(col1 in ('val1','val2','val3','val4') and (col2='0' or col2 IS NULL))
ENABLE;

我需要的是,如果 col1 包含上述 4 个值中的任何一个,那么 col2 必须为“0”或“NULL”。

最佳答案

假设 col1 可为空:

ALTER TABLE tab1
ADD CONSTRAINT CHK1 CHECK 
(col1 not in ('val1','val2','val3','val4') or (col1 is not null and (col2='0' or col2 IS NULL)))
ENABLE;

如果它不可为空,那么您可以取出col1 is not null,但它不会太重要。

现在的约束意味着: 如果 col1 不在这些值中,那就没问题。 但如果是的话,那么另一面的条件也必须满足。

关于sql - Oracle SQL - 检查约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65326342/

相关文章:

mysql - sql查询去掉min和max

sql - 如何提供测试 Django 应用程序所需的 SQL 函数和 View

c# - 未找到结果时处理 ExecuteScalar 返回 null

mysql - 与记录的各个字段的多对多关系

oracle - 如何使用 Oracle DBMS_Scheduler 跟踪正在运行的作业的状态?

java.sql.SQLException : Io exception: Broken pipe how to recover without restart? 异常

sql - 在 oracle 中插入和更新文件中的行

mysql_affect_rows是通过DDL还是DML完成的?

hive - "WITH SERDEPROPERTIES ( ' paths' = 'key1, key2, key3' )"在 Hive DDL json serde 中到底做了什么?

sql - PostgreSQL - 修改扩展中的 CREATE TABLE 语法