qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          數(shù)據(jù)庫(kù)中的事務(wù)、存儲(chǔ)過(guò)程和觸發(fā)器的簡(jiǎn)單使用

           什么是事務(wù)(Transaction)
            指訪問并可能更新數(shù)據(jù)庫(kù)中各種數(shù)據(jù)項(xiàng)的一個(gè)程序執(zhí)行單元(unit)--也就是由多個(gè)sql語(yǔ)句組成,必須作為一個(gè)整體執(zhí)行
            這些sql語(yǔ)句作為一個(gè)整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行
            語(yǔ)法步驟:
            開始事務(wù):BEGIN TRANSACTION
            事務(wù)提交:COMMIT TRANSACTION
            事務(wù)回滾:ROLLBACK TRANSACTION
            判斷某條語(yǔ)句執(zhí)行是否出錯(cuò):
            全局變量@@ERROR;
            @@ERROR只能判斷當(dāng)前一條T-SQL語(yǔ)句執(zhí)行是否有錯(cuò),為了判斷事務(wù)中所有T-SQL語(yǔ)句是否有錯(cuò),我們需要對(duì)錯(cuò)誤進(jìn)行累計(jì);
            例:SET @errorSum=@errorSum+@@error
            存儲(chǔ)過(guò)程---就像數(shù)據(jù)庫(kù)中運(yùn)行方法(函數(shù))
            和C#里的方法一樣,由存儲(chǔ)過(guò)程名/存儲(chǔ)過(guò)程參數(shù)組成/可以有返回結(jié)果。
            前面學(xué)的if else/while/變量 等,都可以在存儲(chǔ)過(guò)程中使用
            優(yōu)點(diǎn):
            執(zhí)行速度更快
            允許模塊化程序設(shè)計(jì)
            提高系統(tǒng)安全性
            減少網(wǎng)絡(luò)流通量
            系統(tǒng)存儲(chǔ)過(guò)程
            由系統(tǒng)定義,存放在master數(shù)據(jù)庫(kù)中
            名稱以“sp_”開頭或”xp_”開頭
            自定義存儲(chǔ)過(guò)程
            由用戶在自己的數(shù)據(jù)庫(kù)中創(chuàng)建的存儲(chǔ)過(guò)程
            系統(tǒng)存儲(chǔ)過(guò)程
            說(shuō)明
            sp_databases
            列出服務(wù)器上的所有數(shù)據(jù)庫(kù)。
            sp_helpdb
            報(bào)告有關(guān)指定數(shù)據(jù)庫(kù)或所有數(shù)據(jù)庫(kù)的信息
            sp_renamedb
            更改數(shù)據(jù)庫(kù)的名稱
            sp_tables
            返回當(dāng)前環(huán)境下可查詢的對(duì)象的列表
            sp_columns
            回某個(gè)表列的信息
            sp_help
            查看某個(gè)表的所有信息
            sp_helpconstraint
            查看某個(gè)表的約束
            sp_helpindex
            查看某個(gè)表的索引
            sp_stored_procedures
            列出當(dāng)前環(huán)境中的所有存儲(chǔ)過(guò)程。  sp_password
            添加或修改登錄帳戶的密碼。
            sp_helptext
            顯示默認(rèn)值、未加密的存儲(chǔ)過(guò)程、用戶定義的存儲(chǔ)過(guò)程、觸發(fā)器或視圖的實(shí)際文本。
            定義存儲(chǔ)過(guò)程的語(yǔ)法
            CREATE  PROC[EDURE]  存儲(chǔ)過(guò)程名
            @參數(shù)   數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT,
            @參數(shù)n  數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT
            AS
            SQL語(yǔ)句
            參數(shù)說(shuō)明:
            參數(shù)可選
            參數(shù)分為輸入?yún)?shù)、輸出參數(shù)
            輸入?yún)?shù)允許有默認(rèn)值
            EXEC  過(guò)程名  [參數(shù)]
            觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,它不同于前面介紹過(guò)的一般的存儲(chǔ)過(guò)程。
            一般的存儲(chǔ)過(guò)程通過(guò)存儲(chǔ)過(guò)程名稱被直接調(diào)用,而觸發(fā)器主要是通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行。
            觸發(fā)器是一個(gè)功能強(qiáng)大的工具,在表中數(shù)據(jù)發(fā)生變化時(shí)自動(dòng)強(qiáng)制執(zhí)行。觸發(fā)器可以用于SQL Server約束、默認(rèn)值和規(guī)則的完整性檢查,還可以完成難以用普通約束實(shí)現(xiàn)的復(fù)雜功能。
            那究竟何為觸發(fā)器?在SQL Server里面也就是對(duì)某一個(gè)表的一定的操作,觸發(fā)某種條件,從而執(zhí)行的一段程序。觸發(fā)器是一個(gè)特殊的存儲(chǔ)過(guò)程。
            常見的觸發(fā)器有三種:分別應(yīng)用于Insert , Update , Delete 事件
            常用語(yǔ)法
          CREATE TRIGGER triggerName ON Table
          for UPDATE|INSERT|DELETE
          AS
          begin
          end
            觸發(fā)器-更新
          CREATE TRIGGER testForFun ON dbo.Category
          for UPDATE
          AS
          begin
          select * from book
          end
          update Category set c_name = 'Android2' where c_id=3
            觸發(fā)器-刪除
          CREATE TRIGGER testForDel ON dbo.Category
          for delete
          AS
          begin
          select * from book
          end
          delete Category set c_name = 'Android2' where c_id=3

          posted on 2014-03-27 17:06 順其自然EVO 閱讀(472) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)

          <2014年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 湖北省| 博野县| 灵宝市| 定远县| 建平县| 思茅市| 五大连池市| 兴化市| 孟连| 南漳县| 蓬安县| 邻水| 定西市| 福清市| 贵南县| 云南省| 汽车| 彰化市| 偏关县| 阳谷县| 神池县| 湟中县| 靖宇县| 疏附县| 田阳县| 西丰县| 泽普县| 寻乌县| 桦川县| 彩票| 靖西县| 虎林市| 龙陵县| 花莲市| 绩溪县| 沾化县| 陆川县| 仁布县| 璧山县| 改则县| 日土县|