zoukankan      html  css  js  c++  java
  • oracle 约束constraint

    写这篇的目的是为了自己以后更好的复习,很多都是参照网上的。

    oracle约束可以检查出不符合业务的需求

    Oracle约束按约束状态又可分为disable novalidate,disable validate,enable novalidate,enable validate. 其中disable/enable代表是否启用约束,validate/novalidate代表启用约束时是否对表中原有数据作检查。

    1.创建表

     create table t1(

    id number,

    name varchar2(20));

    insert into t1 values(1,'A');

    insert into t1 values(1,'B');
    commit

    2.添加约束条件(约束条件很多,check,NOT NULL 等) 准备在下篇中详细介绍

     alter table t1 add constraint pk_t1 primary key (id)  deferrable enable novalidate;

       此时主键已经生效,但源表中包含不符合约束的数据

    3.如果将约束状态更改为 enable validate,却发现原有数据有问题

       alter table t1 enable validate constraint pk_t1;(会报错

    4.建立一个异常表(这两种都可以的)

    SQL>@D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlexpt1.sql 
    create table exceptions(row_id rowid,

    owner varchar2(30),

    table_name varchar2(30),

    constraint varchar2(30));

    5.然后将异常数据插入异常表

    alter table t1 enable validate constraint pk_t1 exceptions into exceptions; 

    6.根据对应表找出对应的异常数据进行修改

    select id,name from t1 where rowid in(

    select row_id from exceptions) FOR UPDATE;





     

  • 相关阅读:
    leetcode: power of three 三种解法
    继续写java和socket
    node中的事件发射器
    谈一谈Crsf和XSS攻击
    谈一谈那些框架们
    【Mysql数据库】学习笔记
    【数据库】DML-增删改查-SQL实现
    【Jsp,Servlet初学总结】 含 cookie和session的使用
    struct和typedef struct彻底明白了
    Android 学习之路
  • 原文地址:https://www.cnblogs.com/wujin/p/2348377.html
Copyright © 2011-2022 走看看