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

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

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

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

閱讀全文

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

熱點內容
為什麼問卷星有的數據只有99 瀏覽:684
如何調數據儲存模式 瀏覽:609
超凡蜘蛛俠2蘋果版免費 瀏覽:110
蘋果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

友情鏈接