觸發器是SQLserver提供給程序員(yuán)和數據分(fēn)析員(yuán)來(lái)保證數據完整性的一種方法,它是與表事(shì)件(jiàn)相(xiàng)關的特殊的存儲過程,它的執行不是由程序調用,也不是手工(gōng)啓動,而是由事(shì)件(jiàn)來(lái)觸發,比如(rú)當對一個表進行操作(zuò)時就(jiù)會激活它執行。
觸發器經常用于加強數據的完整性約束和業務規則等。觸發器可(kě)以從(cóng)DBA_TRIGGERS,USER_TRIGGERS數據字典中查到。SQL3的觸發器是一個能由系統自(zì)動執行對數據庫修改的語句。
觸發器可(kě)以查詢其他(tā)表,而且可(kě)以包含複雜的SQL語句。它們主要用于強制服從(cóng)複雜的業務規則或要求。例如(rú):您可(kě)以根據客戶當前的帳戶狀态,控制是否允許插入新訂單。
觸發器也可(kě)用于強制引用完整性,以便在多個表中添加、更新或删除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的方法是在相(xiàng)關表中定義主鍵和外鍵約束。如(rú)果使用數據庫關系圖,則可(kě)以在表之間創建關系以自(zì)動創建外鍵約束。
觸發器與存儲過程的區别是觸發器不能執行EXECUTE語句調用,而是在用戶執行Transact-SQL語句時自(zì)動觸發執行。
觸發器可(kě)以查詢其他(tā)表,而且可(kě)以包含複雜的SQL語句。它們主要用于強制服從(cóng)複雜的業務規則或要求。例如(rú):您可(kě)以根據客戶當前
的帳戶狀态,控制是否允許插入新訂單。
觸發器也可(kě)用于強制引用完整性,以便在多個表中添加、更新或删除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的方法是在相(xiàng)關表中定義主鍵和外鍵約束。如(rú)果使用數據庫關系圖,則可(kě)以在表之間創建關系以自(zì)動創建外鍵約束。
SQLServer包括三種常規類型的觸發器:DML觸發器、DDL觸發器和登錄觸發器。