博客
关于我
Oracle检查约束
阅读量:167 次
发布时间:2019-02-28

本文共 1232 字,大约阅读时间需要 4 分钟。

列级约束设置

在数据库表结构设计中,约束是用来确保数据的完整性和一致性的。约束可以在列级(字段级)或表级(表级)设置,具体使用场景和需求决定。

列级设置约束的语法

在 Oracle SQL 中,列级约束的语法如下:

CREATE TABLE table_name (    column_name datatype CHECK(expressions),    ...);

列级设置约束的代码示例

以下是一个实例,展示了如何在创建表时为特定列设置列级约束:

CREATE TABLE userinfo_c (    id varchar2(10) primary key,    username varchar2(20),    salary number(5,0) check (salary > 0));

在这个示例中,salary 列设置了一个列级检查约束,确保其值必须大于0。

插入数据时的约束检查

当尝试插入数据时,Oracle 会自动验证列级约束。如果数据不符合约束条件,会抛出以下错误:

ORA-02290:违反检查约束条件 (SYSTEM.SYS_C0011119)

表级约束设置

表级约束可以通过在 CREATE TABLE 语句中添加约束名称来实现。这种方法适用于需要对多个列进行统一约束检查的情况。

表级设置约束的语法

表级约束的语法如下:

CREATE TABLE table_name (    column_name datatype [check | constraint_name],    ...);

表级设置约束的代码示例

以下是一个实例,展示了如何在表级设置约束:

CREATE TABLE userinfo_c1 (    id varchar2(10) primary key,    username varchar2(20),    salary number(5,0) check (salary > 0),    constraint ck_salary check (salary > 0));

在这个示例中,salary 列有一个表级检查约束 ck_salary,确保其值必须大于0。

注意事项

  • 约束优先级:表级约束会覆盖列级约束。如果在表级设置约束和列级设置约束同时存在,表级约束优先生效。

  • 检查约束的执行顺序:在插入数据时,约束会按定义顺序执行。如果某个约束依赖于其他约束的结果,需要确保约束的定义顺序正确。

  • 避免约束冲突:在设计表结构时,确保所有约束之间没有冲突。例如,不同约束之间不应互相矛盾或依赖。

  • 常见错误示例

    以下是一个常见的错误场景:

    INSERT INTO userinfo_c (1, 'aaa', -50);

    执行上述插入语句时,会抛出以下错误:

    ORA-02290: 违反检查约束条件 (SYSTEM.SYS_C0011119)

    这是因为 salary 列的检查约束要求值必须大于0。

    转载地址:http://mnhj.baihongyu.com/

    你可能感兴趣的文章
    OSError: no library called “cairo-2“ was foundno library called “cairo“ was foundno library called
    查看>>
    OSG学习:几何对象的绘制(三)——几何元素的存储和几何体的绘制方法
    查看>>
    OSG学习:场景图形管理(三)——多视图相机渲染
    查看>>
    OSG学习:场景图形管理(四)——多视图多窗口渲染
    查看>>
    Sql 随机更新一条数据返回更新数据的ID编号
    查看>>
    OSG学习:空间变换节点和开关节点示例
    查看>>
    OSG学习:纹理映射(一)——多重纹理映射
    查看>>
    OSG学习:纹理映射(二)——一维/二维/简单立方图纹理映射
    查看>>
    OSG学习:纹理映射(六)——灯光
    查看>>
    OSPF 四种设备角色:IR、ABR、BR、ASBR
    查看>>
    OSPF不能发现其他区域路由时,该怎么办?
    查看>>
    SQL Server 存储过程
    查看>>
    OSPF在大型网络中的应用:高效路由与可扩展性
    查看>>
    OSPF技术连载18:OSPF网络类型:非广播、广播、点对多点、点对多点非广播、点对点
    查看>>
    OSPF技术连载21:OSPF虚链路,现代网络逻辑连接的利器!
    查看>>
    paddlehub安装及对口罩检测
    查看>>
    paddle的两阶段基础算法基础
    查看>>
    SpringBoot中重写addCorsMapping解决跨域以及提示list them explicitly or consider using “allowedOriginPatterns“ in
    查看>>
    pageHelper分页工具的使用
    查看>>
    PageHelper:上手教程(最详细)
    查看>>