• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 福建石屹科技有限公司
    免費會員

    1756-OW16I AB通信模塊

    時間:2021/6/21閱讀:156
    分享:

    當數據庫中表中的數據發生變化時,包括insert,update,delete任意操作,如果我們對該表寫了對應的DML觸發器,那么該觸發器自動執行。DML觸發器的主要作用在于強制執行業 務規則,以及擴展Sql Server約束,默認值等。因為我們知道約束只能約束同一個表中的數據,而觸發器中則可以執行任意Sql命令。

    福建石屹科技有限公司 李工180-6095加8542
    DDL觸發器
    它是Sql Server2005新增的觸發器,主要用于審核與規范對數據庫中表,觸發器,視圖等結構上的操作。比如在修改表,修改列,新增表,新增列等。它在數據庫結構發生變化時執行,我們主要用它來記錄數據庫的修改過程,以及限制程序員對數據庫的修改,比如不允許刪除某些表等。
    登錄觸發器
    登錄觸發器將為響應 LOGIN 事件而激發存儲過程。與 SQL Server 實例建立用戶會話時將引發此事件。登錄觸發器將在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發。因此,來自觸發器內部且通常將到達用戶的所有消息(例如錯誤消息和來自 PRINT 語句的消息)會傳送到 SQL Server 錯誤日志。如果身份驗證失敗,將不激發登錄觸發器。編輯
    觸發器可通過數據庫中的相關表實現級聯更改,不過,通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制用比CHECK約束定義的約束更為復雜的約束。與 CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的數據,以及執行其它操作,如修改數據或顯示用戶定義錯誤信息。觸發器也可以評估數據修改前后的表狀態,并根據其差異采取對策。一個表中的多個同類觸發器(INSERT、UPDATE 或 DELETE)允許采取多個不同的對策以響應同一個修改語句。
    觸發器和約束編輯
    約束和觸發器在特殊情況下各有優勢。觸發器的主要好處在于它們可以包含使用 Transact-SQL 代碼的復雜處理邏輯。因此,觸發器可以支持約束的所有功能;但它在所給出的功能上并不總是 的方法。實體完整性總應在 級別上通過索引進行強制,這些索引或是 PRIMARY KEY 和 UNIQUE 約束的一部分,或是在約束之外獨立創建的。假設功能可以滿足應用程序的功能需求,域完整性應通過 CHECK 約束進行強制,而引用完整性(RI) 則應通過 FOREIGN KEY 約束進行強制。在約束所支持的功能無法滿足應用程序的功能要求時,觸發器就極為有用。
    例如:除非 REFERENCES 子句定義了級聯引用操作,否則 FOREIGN KEY 約束只能以與另一列中的值*匹配的值來驗證列值。
    CHECK 約束只能根據邏輯表達式或同一表中的另一列來驗證列值。如果應用程序要求根據另一個表中的列驗證列值,則必須使用觸發器。約束只能通過標準的系統錯誤信息傳遞錯誤信息。如果應用程序要求使用(或能從中獲益)自定義信息和較為復雜的錯誤處理,則必須使用觸發器。
    觸發器可通過數據庫中的相關表實現級聯更改;不過,通過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的數據修改。當更改外鍵且新值與主鍵不匹配時,此類觸發器就可能發生作用。例如,可以在 titleauthor.title_id 上創建一個插入觸發器,使它在新值與 titles.title_id 中的某個值不匹配時回滾一個插入。不過,通常使用 FOREIGN KEY 來達到這個目的。如果觸發器表上存在約束,則在 INSTEAD OF 觸發器執行后但在 AFTER 觸發器執行前檢查這些約束。如果約束破壞,則回滾 INSTEAD OF 觸發器操作并且不執行 AFTER 觸發器。
    觸發器到底可不可以在視圖上創建 在 SQL Server™ 聯機叢書中,是沒有說觸發器不能在視圖上創建的, 并且在語法解釋中表明:在 CREATE TRIGGER 的 ON 之后可以是視圖。 然而,事實似乎并不是如此,很多也說觸發器不能在視圖上創建。我也專門作了測試,的確如此,不管是普通視圖還是索引視圖,都無法在上面創建觸發器,真的是這樣嗎?
    但是無可厚非的是:當在臨時表或系統表上創建觸發器時會遭到拒絕。
    深刻理解 FOR CREATE TRIGGER 語句的 FOR 關鍵字之后可以跟 INSERT、UPDATE、DELETE 中的一個或多個,也就是說在其它情況下是不會觸發觸發器的, 包括 SELECT、TRUNCATE、WRITETEXT、UPDATETEXT。
    相關內容 一個有趣的應用我們看到許多注冊系統在注冊后都不能更改用戶名,但這多半是由應用程序決定的, 如果直接打開數據庫表進行更改,同樣可以更改其用戶名, 在觸發器中利用回滾就可以巧妙地實現無法更改用戶名……詳細內容 觸發器內部語句出錯時…… 這種情況下,前面對數據更改操作將會無效。舉個例子,在表中插入數據時觸發觸發器,而觸發器內部此時發生了運行時錯誤,那么將返回一個錯誤值,并且拒絕剛才的數據插入。不能在觸發器中使用的語句 觸發器中可以使用大多數 T-SQL 語句,但如下一些語句是不能在觸發器中使用的。
    CREATE 語句,如:CREATE DATABASE、CREATE T觸發器功能強大,輕松可靠地實現許多復雜的功能,為什么又要慎用呢。觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作…… 同時規則、約束、缺省值也是保證數據完整性的重要保障。如果我們對觸發器過分的依賴,勢必影響數據庫的結構,同時增加了維護的復雜程度。

    會員登錄

    ×

    請輸入賬號

    請輸入密碼

    =

    請輸驗證碼

    收藏該商鋪

    X
    該信息已收藏!
    標簽:
    保存成功

    (空格分隔,最多3個,單個標簽最多10個字符)

    常用:

    提示

    X
    您的留言已提交成功!我們將在第一時間回復您~
    在線留言
    主站蜘蛛池模板: 成人国产精品免费视频| 中文国产成人精品久久水| 国产亚洲精品无码成人| 国产成人午夜高潮毛片| 国产成人无码av片在线观看不卡| 欧美成人三级一区二区在线观看| 欧美成人aaa大片| 女性成人毛片a级| 欧美成人影院在线观看三级| 成人亚洲综合天堂| 久久亚洲精品成人777大小说| 欧美成人综合在线| 亚洲成人动漫在线| 成人午夜免费福利| 中文国产成人精品久久水| 成人免费一区二区三区| 亚洲国产成人精品无码区在线秒播 | 韩国成人在线视频| 国产成人精品免费视频大全| 色老成人精品视频在线观看| 国产成人yy免费视频| 成人毛片全部免费观看| 97成人在线视频| 久久综合欧美成人| 四虎国产成人永久精品免费| 国产成人综合久久精品下载| 成人爽a毛片在线视频| 久久天堂成人影院| 久久伊人成人网| 精品无码成人片一区二区98| 久久久久99精品成人片| 亚洲一成人毛片| 亚洲av成人无码久久精品老人| 国产成人yy免费视频| 国产成人亚洲精品大帝| 国产成人A亚洲精V品无码| 国产成人精品日本亚洲专区6 | 成人影院wwwwwwwwwww| 欧美成人在线影院| 成人亚洲国产精品久久| 成人免费在线播放|