導航:首頁 > 編程大全 > 刪除資料庫時視圖也將被刪除

刪除資料庫時視圖也將被刪除

發布時間: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 行受影響)

對於多表關聯的視圖, 刪除的時候,需要人為的去判斷
例如當 主表 和 子表,都只有一條記錄的情況下。
無法判斷 本次刪除, 是要刪除掉一個子表的記錄,留下主表的。
還是 主表 子表的數據,一同刪除。

閱讀全文

與刪除資料庫時視圖也將被刪除相關的資料

熱點內容
vim怎麼書寫文件名 瀏覽:639
javabyte輸出16進制 瀏覽:232
oracle導入dmp文件失敗 瀏覽:557
蘋果6鋼化膜觸屏不靈 瀏覽:357
屏幕上有app殘影怎麼辦 瀏覽:960
java寫入文件編碼 瀏覽:577
win10電腦如何存放分類文件 瀏覽:722
手機wifi打開電腦文件 瀏覽:165
手機軟體不想自動升級怎麼設置 瀏覽:105
語文列印作業的app有哪些 瀏覽:528
ubuntu安裝指定版本的svn 瀏覽:105
計算機網路培訓怎麼樣 瀏覽:945
愛剪輯app保存的草稿在哪裡 瀏覽:534
ps如何把文件換成電子版 瀏覽:396
網路流量怎麼獲得數據 瀏覽:338
進口app哪個好用 瀏覽:546
軟碟通找不到需要刻錄的文件 瀏覽:792
編程和電影哪個好 瀏覽:879
蘋果6sp出廠系統版本 瀏覽:292
有哪些高級編程語言 瀏覽:728

友情鏈接