• 技术文章 >数据库 >MySQL

    mysql更新视图的限制

    小妮浅浅小妮浅浅2021-10-27 14:29:24原创5737

    1、有些视图是不可更新的,因为这些视图的更新不能唯一有意义地转换为相应的基本表。

    2、一般来说,可以更新行列子集视图。除列子集视图外,理论上还可以更新一些视图。

    实例

    -- 创建视图 ldq_t1
    CREATE VIEW ldq_t1 AS
    SELECT
      *
    FROM
      t3
    WHERE id1 > 10 WITH CHECK OPTION ;
    -- 查询ldq_t1中的所有结果
    SELECT * FROM ldq_t1;
     
    -- 创建视图 ldq_t2
    CREATE VIEW ldq_t2 AS
    SELECT
      *
    FROM
      ldq_t1
    WHERE id1 < 30 WITH LOCAL CHECK OPTION ;
     
    -- 创建视图 ldq_t3
    CREATE VIEW ldq_t3 AS
    SELECT
      *
    FROM
      ldq_t1
    WHERE id1 < 30  WITH  CHECK OPTION ;
     
    -- 更新视图ldq_t2(只有ldq_t2中存在的数据都可以更新)
    SELECT * FROM ldq_t2; -- 查看ldq_t2当前记录
    UPDATE ldq_t2 SET id1=5 WHERE id2=22;  -- 可以执行成功
    UPDATE ldq_t2 SET id1=35 WHERE id2=22;  -- 将会报错CHECK OPTION failed(因为执行该语句之后,id2=22记录将从ldq_t2消失)
    UPDATE ldq_t2 SET id1=28 WHERE id2=22;  -- 可以执行成功
     
     
    -- 更新ldq_t3
    SELECT * FROM ldq_t3;
    UPDATE ldq_t3 SET id1=5 WHERE id2=22;  -- 将会报错CHECK OPTION failed(因为数据更新之后,必须还要保证其仍然在ldq_t3和ldq_t1之中,该语句执行后id2=22记录将从ldq_t1消失)
    UPDATE ldq_t3 SET id1=15 WHERE id2=22; -- 能够执行成功
    UPDATE ldq_t3 SET id1=35 WHERE id2=22; -- 将会报错CHECK OPTION failed(因为执行该语句之后,id2=22记录将从ldq_t3消失)
    DELETE FROM  ldq_t3 WHERE id2=22;  -- 执行成功

    以上就是mysql更新视图的限制,希望对大家有所帮助。更多mysql学习指路:Mysql

    专题推荐:mysql 视图
    上一篇:mysql中join和where的区别 下一篇:mysql常见的备份方法

    相关文章推荐

    • mysql索引的基本原理• MySQL 8.0.27正式GA• mysql联合查询是什么• mysql事务对效率的影响• mysql使用的基础规范• mysql表的设计规范• mysql列的使用规范• mysql索引规范的整理• mysql中SQL语句的使用注意• mysql中join和where的区别

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网