SQL Server——存儲過程(Stored Procedure)、事物、觸發器


存儲過程(proc 或 procedure)

存儲過程(Stored Procedure),計算機用語,是一組為了完成特定功能的SQL語句集,是利用SQL Server所提供的Transact-SQL語言所編寫的程序。經編譯后存儲在數據庫中。存儲過程是數據庫中的一個重要對象,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。存儲過程是由流控制和SQL語句書寫的過程,這個過程經編譯和優化后存儲在數據庫服務器中,存儲過程可由應用程序通過一個調用來執行,而且允許用戶聲明變量 。同時,存儲過程可以接收和輸出參數、返回執行存儲過程的狀態值,也可以嵌套調用

CREATE PROCEDURE [擁有者.]存儲過程名[;程序編號] 

[(參數#1,…參數#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}

]

[FOR REPLICATION]

AS 

  程序行 GO

例如:

CREATE procedure sp_No1
@a int,
@b char(10)
as
    select *from Users where SCode=''+@a+''
GO

搜狗百科:http://baike.sogou.com/v449738.htm?fromTitle=%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B

 

事物(Database Transaction)

數據庫事務(Database Transaction)是指作為單個邏輯工作單元執行的一系列操作,要么完整地執行,要么完全地不執行。 正常的情況下,這些操作將順利進行,最終交易成功,與交易相關的所有數據庫信息也成功地更新。但是,如果在這一系列過程中任何一個環節出了差錯,數據庫中所有信息都必須保持交易前的狀態不變。

相關屬性:原子性、一致性、隔離性、持久性

SQL事務的寫法例子
BEGIN TRANSACTION DeleteSupv
    --SQL語句 
    IF @@error<>0 
 BEGIN  
        ROLLBACK TRAN DeleteSupv  
  GOTO on_error
 END 
    --SQL語句 
    IF @@error<>0 
 BEGIN  
        ROLLBACK TRAN DeleteSupv  
  GOTO on_error
 END 
COMMIT TRAN DeleteSupv

RETURN 1
on_error:
    print 'Error occured' 

搜狗百科:http://baike.sogou.com/v298468.htm?fromTitle=%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1

 

觸發器(trigger)

觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由個事件來觸發,比如當對一個表進行操作(insert,delete,update)時就會激活它執行。

SQL Server 包括三種常規類型的觸發器:DML 觸發器、DDL 觸發器和登錄觸發器。

DML觸發器:當數據庫中表中的數據發生變化時,包括insert,update,delete任意操作

DDL觸發器:主要用於審核與規范對數據庫中表,觸發器,視圖等結構上的操作。它在數據庫結構發生變化時執行,我們主要用它來記錄數據庫的修改過程,以及限制程序員對數據庫的修改,比如不允許刪除某些指定表等。

登錄觸發器:登錄觸發器將為響應 LOGON 事件而激發存儲過程。

CREATE TRIGGER `<databaseName>`.`<triggerName>`

< [ BEFORE|AFTER ] > < [ INSERT|UPDATE|DELETE ] >

ON [dbo]<tableName> //dbo代表該表的所有者

FOR EACH ROW

BEGIN

--do something

END|

搜狗百科:http://baike.sogou.com/v449766.htm?fromTitle=%E8%A7%A6%E5%8F%91%E5%99%A8


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM