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

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

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

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

閱讀全文

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

熱點內容
cocoapods版本更新 瀏覽:361
國外it大神教你學習如何編程 瀏覽:312
手機存儲應用程序 瀏覽:284
頁面自適應屏幕如何調整代碼數據 瀏覽:681
jsjson工具 瀏覽:299
資料庫中如何備份一張表的數據 瀏覽:739
網路設備能用到什麼 瀏覽:64
暴風轉碼如何添加文件夾 瀏覽:515
延安整合網路營銷有哪些 瀏覽:74
查找word打開過的文件在哪裡 瀏覽:137
b樹java代碼 瀏覽:683
電腦文件存儲 瀏覽:657
蘭州中考徵集志願在哪個網站 瀏覽:215
cs文件上傳下載 瀏覽:244
拷貝文件到根目錄下重命名linux 瀏覽:603
api函數的頭文件 瀏覽:249
華為怎麼綁定迷你編程 瀏覽:215
機構怎麼申請少兒編程考級 瀏覽:495
崑山數控編程哪裡好學 瀏覽:459
jspcfor跳出 瀏覽:65

友情鏈接