• 技术文章 >数据库 >MySQL

    mysql更新视图的限制

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

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

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

    实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    -- 创建视图 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学习网