最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單觸發(fā)器的使用 獻給SQL初學者

 更新時間:2011年09月13日 21:51:24   作者:  
簡單觸發(fā)器的使用 獻給SQL初學者,使用sqlserver的朋友可以參考下。
首先,啰嗦幾句廢話如下:
 ?。?)觸發(fā)器(trigger)是個特殊的存儲過程,它的執(zhí)行并不需要我們去顯式調用,而是由一些事件觸發(fā),這有點類似C#中的事件處理機制。當使用UPDATE,INSERT  或DELETE的一種或多種對指定的數據庫的相關表進行操作時,會觸發(fā)觸發(fā)器。
  (2)觸發(fā)器可以包含復雜的SQL語句,主要用于強制復雜的業(yè)務規(guī)則或要求。
 ?。?)觸發(fā)器能夠維持數據庫的完整性,當執(zhí)行插入、更新或刪除操作時,觸發(fā)器會根據表與表之間的關系,強制保持其數據的完整性。
  
  好,啰嗦完了開始貼代碼,首先貼上我創(chuàng)建的兩張表所包含的列,他們的關聯關系是1對多,以UserID進行關聯。


然后來一個非常簡單的觸發(fā)器
復制代碼 代碼如下:

IF EXISTS(SELECT * FROM sysobjects
WHERE name='tr_Users_OnUpdate' AND TYPE='TR')
DROP TRIGGER tr_Users_OnUpdate
GO --這里呢創(chuàng)建觸發(fā)器與存儲過程類似(都是DDL)
--先判斷如否存在同名觸發(fā)器就刪除然后重建
CREATE TRIGGER tr_Users_OnUpdate
ON Users FOR UPDATE
AS PRINT ‘Users表已發(fā)生修改'
GO

上述代碼中,tr_Users_OnUpdate為觸發(fā)器名稱,Users為表名。這觸發(fā)器的作用是當向Users表執(zhí)行Update時將打印“Users表已發(fā)生修改”。
  好了我們可以看到這個觸發(fā)器的實用性不是很大,那么接下來呢我們再來學習下關于觸發(fā)器里兩種特殊的表“inserted”和“deleted”。這兩張表主要用于觸發(fā)器。Deleted 表用于存儲 執(zhí)行DELETE 和 UPDATE操作時所影響的行的副本。而Inserted 表則用于存儲 INSERT 和 UPDATE 語句所影響的行的副本。那么我們看到執(zhí)行UPDATE操作時都會有記錄分別存儲到“inserted”和“deleted”。其實理解起來不難deleted表存儲的是Update之前的記錄,而inserted存儲的呢則是Update之后的記錄,這里關于理論性東西我不再贅述,官方資料有更詳細說明。
  現在我們要做的就是本文的重點,當往WordInfo添加一條記錄時,使用觸發(fā)器使UserInfo的相應記錄的LeaveCount字段增加1。代碼如下:
復制代碼 代碼如下:

--添加留言的觸發(fā)器
IF EXISTS(SELECT name FROM sysobjects WHERE name='tr_LeaveWord_Add' AND TYPE='TR')
DROP TRIGGER tr_LeaveWord_Add
GO
CREATE TRIGGER tr_LeaveWord_Add
ON WordInfo FOR INSERT
AS UPDATE UserInfo SET LeaveCount=LeaveCount+1
WHERE UserID=(SELECT TOP 1 UserID FROM Inserted)
GO

OK,到這里就可以收工了,值得注意的是如果觸發(fā)器是UPDATE觸發(fā)的,那么在執(zhí)行Update后再查詢更新之前的數據改成查詢deleted表即可。

相關文章

  • SQL Server中聚合函數的用法

    SQL Server中聚合函數的用法

    本文詳細講解了SQL Server中聚合函數的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • SQL?Server?2008?R2安裝教程及錯誤解決方案詳細教程

    SQL?Server?2008?R2安裝教程及錯誤解決方案詳細教程

    這篇文章主要介紹了安裝SQL?Server?2008?R2的步驟,并列舉了幾個常見的錯誤及其解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-02-02
  • 修復斷電等損壞的SQL 數據庫

    修復斷電等損壞的SQL 數據庫

    修復斷電等損壞的SQL 數據庫,不論因為哪種原因,大家都可以測試下,試試。
    2009-08-08
  • SQL Server 比較日期大小的方法

    SQL Server 比較日期大小的方法

    這篇文章介紹了SQL Server 比較日期大小的方法,有需要的朋友可以參考一下
    2013-09-09
  • sqlserver 常用存儲過程集錦

    sqlserver 常用存儲過程集錦

    常用存儲過程集錦,都是一些mssql常用的一些,大家可以根據需要選擇使用。
    2009-09-09
  • sql 時間函數 整理的比較全了

    sql 時間函數 整理的比較全了

    sql 時間函數,需要的朋友可以參考下。
    2009-11-11
  • MSSQL內外連接(INNER JOIN)語句詳解

    MSSQL內外連接(INNER JOIN)語句詳解

    這幾天重新溫習了一下SQL的書本,現在的思路應該是很清楚了,現在把自己的理解發(fā)出來給大家溫習下。希望和我一樣對SQL的連接語句不太理解的朋友能夠有所幫助
    2006-11-11
  • SQLite如何修改字段類型

    SQLite如何修改字段類型

    這篇文章主要介紹了SQLite修改字段類型的方法,SQLite不支持直接修改字段類型,如需要修改字段類型,本文給大家分享相關方法處理,需要的朋友可以參考下
    2024-07-07
  • SQL語句的各個關鍵字的解析過程詳細總結

    SQL語句的各個關鍵字的解析過程詳細總結

    由于最近需要做一些sql query性能提升的研究,因此研究了一下sql語句的解析過程;本文是我在看了各種資料后手機總結的,會詳細的,一步一步的講述一個sql語句的各個關鍵字的解析過程,歡迎大家互相學習
    2013-01-01
  • SQL Server常用管理命令小結

    SQL Server常用管理命令小結

    需要管理sql server的朋友,需要掌握的,大家可以收藏下,方便以后使用
    2008-09-09

最新評論

福贡县| 金坛市| 扎鲁特旗| 茶陵县| 寻甸| 清水河县| 乳源| 乐平市| 石棉县| 南木林县| 霸州市| 衡东县| 灵丘县| 旬阳县| 阜康市| 星子县| 迭部县| 长阳| 巴南区| 化州市| 镇江市| 天津市| 旬邑县| 宜都市| 运城市| 嘉黎县| 双鸭山市| 神木县| 苏尼特左旗| 桂平市| 大石桥市| 海伦市| 阿拉善盟| 富锦市| 林甸县| 黔东| 建水县| 广东省| 连城县| 肇东市| 古田县|