导航:首页 > 编程大全 > 删除数据库时视图也将被删除

删除数据库时视图也将被删除

发布时间:2023-06-09 17:39:35

❶ sql问题 删除视图中的数据,表中的数据会删除吗

如果你那个视图,是 单表的, 没写 触发器的。

那么 如果 删除视图中的数据 成功了,那么 表中的数据 就被删除了。

如果那个视图, 写了个 INSTEAD OF 触发器. 但是里面没有任何删除的动作。
那么 可能你 DELETE FROM 视图, 最后表的数据,一点也没变化, 也是可以的。

1> CREATE VIEW v_main_sub AS
2> SELECT
3> test_main.id AS main_id,
4> test_main.value AS main_value,
5> test_sub.id AS sub_id,
6> test_sub.value AS sub_value
7> FROM
8> test_main, test_sub
9> WHERE
10> test_main.id = test_sub.main_id;
11> go

1> SELECT * FROM v_main_sub;
2> go
main_id main_value sub_id sub_value
----------- ---------- ----------- ----------
1 ONE 1 ONEONE
2 TWO 2 TWOTWO

(2 行受影响)

1> UPDATE v_main_sub
2> SET main_value='ONX'
3> WHERE main_id = 1;
4> go

(1 行受影响)

1> UPDATE v_main_sub
2> SET sub_value='ONXONX'
3> WHERE main_id = 1;
4> go

(1 行受影响)

1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
消息 4405,级别 16,状态 1,服务器 GMJ-PC\SQLEXPRESS,第 1 行
视图或函数 'v_main_sub' 不可更新,因为修改会影响多个基表。

1> CREATE TRIGGER v_main_sub_trigger
2> ON v_main_sub
3> INSTEAD OF DELETE
4> AS
5> DECLARE
6> @main_id INT,
7> @sub_id INT;
8> BEGIN
9> SELECT @main_id=main_id, @sub_id=sub_id FROM deleted;
10>
11>
12> PRINT(@main_id);
13> PRINT(@sub_id);
14> END;
15> go

1> DELETE FROM v_main_sub WHERE main_id = 1;
2> go
1
1

(1 行受影响)
1> DELETE FROM v_main_sub WHERE sub_id = 1;
2> go
1
1

(1 行受影响)

对于多表关联的视图, 删除的时候,需要人为的去判断
例如当 主表 和 子表,都只有一条记录的情况下。
无法判断 本次删除, 是要删除掉一个子表的记录,留下主表的。
还是 主表 子表的数据,一同删除。

阅读全文

与删除数据库时视图也将被删除相关的资料

热点内容
ps文件添加文字填充做旧 浏览:934
透明的文件夹图标 浏览:913
vivo手机主题壁纸在哪个文件夹里 浏览:907
win10安装系统的三个文件 浏览:365
mastercam多轴编程怎么设置夹具 浏览:904
postgre删除数据库 浏览:501
laravel多文件上传 浏览:960
vb秒表代码制作 浏览:413
苹果4s其他文件 浏览:726
检查地贫数据多少算携带者 浏览:196
w10重装后备份文件在哪里 浏览:122
vim怎么书写文件名 浏览:639
javabyte输出16进制 浏览:232
oracle导入dmp文件失败 浏览:557
苹果6钢化膜触屏不灵 浏览:357
屏幕上有app残影怎么办 浏览:960
java写入文件编码 浏览:577
win10电脑如何存放分类文件 浏览:722
手机wifi打开电脑文件 浏览:165
手机软件不想自动升级怎么设置 浏览:105

友情链接