• 关于delete视图的一个小实验


    今天在学习delete和truncate的区别的时候,这篇文章:

    https://www.cnblogs.com/wojiaochuichui/p/9523005.html

    提到 delete 可以删除view中的数据,一时好奇,做了一个实验,顺便还发现了一个有意思的现象,记录如下:

    1.创建视图

    create view v_wttttest_0221
    as
    select 1 as id,'a' as name from dual
    union
    select 2 as id,'b' as name from dual
    union
    select 3 as id,'c' as name from dual

    2.删除视图某一条记录

     究其原因,可能是原表不是正常的表导致的,这个不是重点

    3.创建一个正常的视图,再执行删除操作

    create table t_wttttest_0221 as select * from v_wttttest_0221

    select * from t_wttttest_0221

    create view v_wttttest_0221new
    as
    select * from t_wttttest_0221

    select * from v_wttttest_0221new
    delete from v_wttttest_0221new where id=1

    真的可以删除了!

     再查看原表:

     和之前的想法也有点一样,只是没有这么确定,实验做完了就确定了

    解释如下:
    由于视图  没有相应的存储空间,视图中的数据不是存放在视图中的,对视图的一切操作最终都要  转换成对基本表的操作

    对视图使用 delete语句 可以删除底层表中的数据,与使用  drop view 语句删除视图是不同的,使用drop view 语句是删除整个视图,但不删除与该视图有关的底层表中的数据。

    以上就是这个小实验的过程~

  • 相关阅读:
    SpringBoot入门
    Java自定义注解(1)
    git集成idea
    git常用命令
    Shiro授权
    shiro认证
    shiro入门
    SpringMVC文件上传
    SpringMVC入门
    mybatis关联关系映射
  • 原文地址:https://www.cnblogs.com/hshuai/p/15918912.html
Copyright © 2020-2023  润新知