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

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

发布时间: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 行受影响)

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

阅读全文

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

热点内容
苹果6s放大器怎么设置密码 浏览:626
windows7怎么没有无线网络 浏览:917
5s苹果手机录像只有沙沙响的声音 浏览:879
多张图纸怎样打印到一个pdf文件里 浏览:347
安装cad2020出现无法定位inf文件 浏览:728
百度竞价数据如何分析 浏览:965
ps文件发送第三方打印 浏览:547
linux命令界面显示文件名 浏览:930
超级录屏视频在文件夹里不能播放 浏览:549
最简单的编程软件有哪些 浏览:14
博客签到系统如何设计数据库 浏览:639
论文怎么设置目录word 浏览:609
广电网络dlna是什么意思 浏览:12
js变量加下划线 浏览:18
app开发工作是吃青春饭吗 浏览:117
苹果手机国家查询 浏览:765
苹果6照片删了怎么找回 浏览:399
文件夹控制面板 浏览:536
人工神经网络人脸识别 浏览:531
打开cad提示参照文件 浏览:521

友情链接