視圖相當於虛擬的表,可以使用正常SQL語句進行增刪查改的操作,返回壹張表。其實說白了與表的功能基本壹樣。
觸發器,是在執行增刪改的時候觸發的壹些SQL操作。可以在增刪改之後觸發SQl,也可以在增刪改的時候替代SQL。有兩種不同的觸發模式而已。
壹下是來自官方的標準解釋:
什麽是視圖?
在SQL中,視圖是基於SQL語句的結果集的可視化的表。
視圖包含行和列,就像壹個真實的表。視圖中的字段就是來自壹個或多個數據庫中的真實的表中的字段。我們可以向視圖添加SQL函數、WHERE以及JOIN語句,我們也可以提交數據,就像這些來自於某個單壹的表。
註釋:數據庫的設計和結構不會受到視圖中的函數、where或join語句的影響。
SQLCREATEVIEW語法
CREATEVIEWview_nameAS
SELECTcolumn_name(s)
FROMtable_name
WHEREcondition
註釋:視圖總是顯示最近的數據。每當用戶查詢視圖時,數據庫引擎通過使用SQL語句來重建數據。
觸發器是壹種特殊類型的存儲過程,它不同於之前的我們介紹的存儲過程。觸發器主要是通過事件進行觸發被自動調用執行的。而存儲過程可以通過存儲過程的名稱被調用。
0?1什麽是觸發器
觸發器對表進行插入、更新、刪除的時候會自動執行的特殊存儲過程。觸發器壹般用在check約束更加復雜的約束上面。觸發器和普通的存儲過程的區別是:觸發器是當對某壹個表進行操作。諸如:update、insert、delete這些操作的時候,系統會自動調用執行該表上對應的觸發器。SQLServer2005中觸發器可以分為兩類:DML觸發器和DDL觸發器,其中DDL觸發器它們會影響多種數據定義語言語句而激發,這些語句有create、alter、drop語句。
DML觸發器分為:
1、after觸發器(之後觸發)
a、insert觸發器
b、update觸發器
c、delete觸發器
2、insteadof觸發器(之前觸發)
其中after觸發器要求只有執行某壹操作insert、update、delete之後觸發器才被觸發,且只能定義在表上。而insteadof觸發器表示並不執行其定義的操作(insert、update、delete)而僅是執行觸發器本身。既可以在表上定義insteadof觸發器,也可以在視圖上定義。
觸發器有兩個特殊的表:插入表(instered表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。有系統在內存中創建者兩張表,不會存儲在數據庫中。而且兩張表的都是只讀的,只能讀取數據而不能修改數據。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被刪除。Inserted表的數據是插入或是修改後的數據,而deleted表的數據是更新前的或是刪除的數據。