• with check option(视图 )


    建立视图的时候使用WITH CHECK OPTION 与不使用的区别

    WITH CHECK OPTION
      insert update  delete
    使用with check option 保证insert后,数据要被视图查询出来 保证update后,数据要被视图查询出来 无要求
    未使用with check option 无要求 无要求

    无要求

    --========================================建立测试表TAB
    --DROP TABLE TAB
    CREATE TABLE TAB
    (
      ID INT,
      NAME VARCHAR(10),
      LOC VARCHAR(100)
    )
    ---=======================================插入业务数据测试
    INSERT INTO TAB SELECT 1,'JACK','ChangSha' UNION ALL
                    SELECT 2,'TOM','ShangHai' UNION ALL
                    SELECT 3,'JACK','Kunming' UNION ALL
                    SELECT 4,'JACK','Hubei' 
    
    --===================================建立视图
    --1.含有WITH CHECK OPTION的
    --DROP VIEW V_WCO
    GO
    CREATE VIEW V_WCO
    AS
    SELECT * FROM TAB WHERE NAME='TOM'
    WITH CHECK OPTION;
    
    --2.不含有WITH CHECK OPTION的
    --DROP VIEW V_WCO_2
    CREATE VIEW V_WCO_2
    AS
    SELECT * FROM TAB WHERE NAME='TOM'
    --================更新视图============--
    --###########===INSERT===############--
    --INSERT 视图查询结果集中不包含的记录
    
    Insert  into V_WCO SELECT 5,'JACK','QuJin'
    
    --INSERT 视图查询结果集中包含的记录
    insert into V_WCO SELECT 5,'TOM','QuJin'
    /*
      消息 550,级别 16,状态 1,第 1 行
    试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
    语句已终止。
    */
    
    
    
    --###########===DELETE===############--
    
    
    delete from V_WCO where ID=1
    /*
      (0 行受影响)
    */
    
    --###########===UPDATE===############--
    ---update V_WCO
    update V_WCO set NAME='已更新' WHERE ID=1
    --(0 行受影响)
    update V_WCO set NAME='已更新' WHERE ID=2
    --(1 行受影响)
    
                    
  • 相关阅读:
    java web 里的JSP 对象的简单了解
    PLSQL 语言 异常 函数 存储过程
    PLSQL语言 分支循环
    高级查询
    oracle 杂项
    sql 里面的常用函数
    java所有内容练习
    线程
    oracle基础 知识点

  • 原文地址:https://www.cnblogs.com/OliverQin/p/5075717.html
Copyright © 2020-2023  润新知