資料庫中的事務 儲存過程和觸發器的簡單使用

2021-06-21 04:22:16 字數 2414 閱讀 6328

l

什麼是事務(transaction)

l指訪問並可能更新資料庫中各種資料項的乙個程式執行單元(unit)--也就是由多個sql語句組成,必須作為乙個整體執行

l這些sql語句作為乙個整體一起向系統提交,要麼都執行、要麼都不執行

l語法步驟:

•開始事務:begin transaction

•事務提交:commit transaction

•事務回滾:rollback transaction

l判斷某條語句執行是否出錯:

•全域性變數@@error;

•@@error只能判斷當前一條t-sql語句執行是否有錯,為了判斷事務中所有t-sql語句是否有錯,我們需要對錯誤進行累計;

例:set @errorsum=@errorsum+@@error

l儲存過程---就像資料庫中執行方法(函式)

l和c#裡的方法一樣,由儲存過程名/儲存過程引數組成/可以有返回結果。

l前面學的if else/while/變數 等,都可以在儲存過程中使用

l優點:

執行速度更快

允許模組化程式設計

提高系統安全性

減少網路流通量

l系統儲存過程

•由系統定義,存放在master資料庫中

•名稱以「sp_」開頭或」xp_」開頭

l自定義儲存過程

•由使用者在自己的資料庫中建立的儲存過程

系統儲存過程 說明

sp_databases

列出伺服器上的所有資料庫。

sp_helpdb

報告有關指定資料庫或所有資料庫的資訊

sp_renamedb

更改資料庫的名稱

sp_tables

返回當前環境下可查詢的物件的列表

sp_columns

回某個表列的資訊

sp_help

檢視某個表的所有資訊

sp_helpconstraint

檢視某個表的約束

sp_helpindex

檢視某個表的索引

sp_stored_procedures

列出當前環境中的所有儲存過程。

sp_password

新增或修改登入帳戶的密碼。

sp_helptext

顯示預設值、未加密的儲存過程、使用者定義的儲存過程、觸發器或檢視的實際文字。

l定義儲存過程的語法

create

proc[edure]  儲存過程名

@引數1  資料型別 = 預設值 output,

@引數n  資料型別 = 預設值 output

as sql語句

l引數說明:

•引數可選

•引數分為輸入引數、輸出引數

•輸入引數允許有預設值

lexec  過程名  [引數]

l觸發器是一種特殊型別的儲存過程,它不同於前面介紹過的一般的儲存過程。

l一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行。

l觸發器是乙個功能強大的工具,在表中資料發生變化時自動強制執行。觸發器可以用於sql server約束、預設值和規則的完整性檢查,還可以完成難以用普通約束實現的複雜功能

l那究竟何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。 

常見的觸發器有三種:分別應用於insert , update , delete 事件

l常用語法

create

trigger triggername on

table

forupdate

|insert|delete

as

begin

… end

l觸發器-更新

create

trigger testforfun on dbo.category

forupdate

as

begin

select * from book

end

update category set c_name = 'android2' where c_id=3

l觸發器-刪除

create

trigger testfordel on dbo.category

fordelete

as

begin

select * from book

end

delete category set c_name = 'android2' where c_id=3

資料庫儲存過程和觸發器

建立儲存過程 create procedure titles sum title varchar 40 sum money output asselect sum sum price from titles where title like title godeclare totalcost mon...

資料庫觸發器和儲存過程

觸發器 trigger 是由事件來觸發某個操作。這些事件包括insert語句 update語句和delete語句。當資料庫系統執行這些事件時,會啟用促發其執行相應的操作。create trigger 觸發器名 before after 觸發事件 on 表名 for each row 執行語句 每插入...

資料庫觸發器 和 儲存過程

觸發器是指在執行指定表修改操作時強制執行的儲存過程 可以理解為一種特殊的儲存過程 通常用於強制執行不同表之間相互關聯的資料的的完整性或者一致性 因為是在建立表的時候就建立了,所以是不可繞過的,可以用於一些複雜操作場景,用來完成資料完整性。1 ddl 資料定義觸發器 在發生 資料定義語言,如增加表 修...