新聞中心
在SQL觸發(fā)器或存儲(chǔ)過(guò)程中,可以獲取程序登錄的用戶(hù)。下面我們就開(kāi)始介紹,怎樣實(shí)現(xiàn)在SQL觸發(fā)器或存儲(chǔ)過(guò)程中獲取在程序登錄的用戶(hù)。在插入,更新或刪除的存儲(chǔ)過(guò)程,把登錄程序當(dāng)前用戶(hù)傳入進(jìn)去。在存儲(chǔ)過(guò)程中,再把相關(guān)信息存入局部(#)臨時(shí)表中,這樣子,在觸發(fā)器即可獲取了。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),寧陵企業(yè)網(wǎng)站建設(shè),寧陵品牌網(wǎng)站建設(shè),網(wǎng)站定制,寧陵網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,寧陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
下面代碼示例,以一個(gè)[Member]表作例,可以參詳:
- Member
- CREATE TABLE Member
- (
- Member_nbr INT IDENTITY(1,1) PRIMARY EKY NOT NULL,
- [Name] NVARCHAR(30),
- Birthday DATETIME,
- Email NVARCHAR(100),
- [Address] NVARCHAR(100)
- )
- GO
插入存儲(chǔ)過(guò)程:
- MemberSp_Insert
- CREATE PROCEDURE MemberSp_Insert
- (
- --Other parameter
- @Operater NVARCHAR(50) --帶到此參數(shù),可從程序的用戶(hù)傳至數(shù)據(jù)庫(kù)
- )
- AS
- BEGIN
處理插入事務(wù):
- ---INSERT INTO [dbo].[Member] (xxx) VALUES(xxx)
把相關(guān)信息存入臨時(shí)表,方便在觸發(fā)器時(shí)取到:
- IF OBJECT_ID('#AuditWho') IS NOT NULL
- DROP TABLE [#AuditWho]
- CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))
- INSERT INTO [#AuditWho] VALUES(SCOPE_IDENTITY(),@Operater)
- END
- GO
更新存儲(chǔ)過(guò)程:
- MemberSp_Update
- CREATE PROCEDURE MemberSp_Update
- (
- --Other parameter
- @Member_nbr INT,
- @Operater NVARCHAR(50) --帶到此參數(shù),可從程序的用戶(hù)傳至數(shù)據(jù)庫(kù)
- )
- AS
- BEGIN
處理更新事務(wù):
- ---UPDATE [dbo].[Member] SET [xxx] = xxx, ... WHERE [Member_nbr] = @Member_nbr
把相關(guān)信息存入臨時(shí)表,方便在觸發(fā)器時(shí)取到:
- IF OBJECT_ID('#AuditWho') IS NOT NULL
- DROP TABLE [#AuditWho]
- CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))
- INSERT INTO [#AuditWho] VALUES(@Member_nbr,@Operater)
- END
- GO
刪除存儲(chǔ)過(guò)程:
- MemberSp_Delete
- CREATE PROCEDURE MemberSp_Delete
- (
- @Member_nbr INT,
- @Operater NVARCHAR(50) --帶到此參數(shù),可從程序的用戶(hù)傳至數(shù)據(jù)庫(kù)
- )
- AS
- BEGIN
處理刪除事務(wù):
- ---DELETE FROM [dbo].[Member] WHERE [Member_nbr] = @Member_nbr
把相關(guān)信息存入臨時(shí)表,方便在觸發(fā)器時(shí)取到:
- IF OBJECT_ID('#AuditWho') IS NOT NULL
- DROP TABLE [#AuditWho]
- CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))
- INSERT INTO [#AuditWho] VALUES(@Member_nbr,@Operater)
- END
- GO
#p#
從上面的存儲(chǔ)過(guò)程,用戶(hù)相關(guān)的信息(應(yīng)用程序的用戶(hù)信息)已經(jīng)在存儲(chǔ)過(guò)程中存入臨時(shí)表中,接下來(lái),在觸發(fā)器,怎樣獲取呢??梢詤⒖枷旅娴挠|發(fā)器代碼:
插入觸發(fā)器:
- MemberTr_Insert
- CREATE TRIGGER [dbo].[MemberTr_Insert]
- ON [dbo].[Member]
- FOR INSERT
- AS
- BEGIN
- IF @@ROWCOUNT = 0 RETURN
- SET NOCOUNT ON
事務(wù)處理:
- DECLARE @Operater NVARCHAR(50),@Member_nbr INT
- SELECT @Member_nbr = [Member_nbr] FROM inserted
- SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr
插入Audit 表中:
- INSERT INTO ....
- END
- GO
更新觸發(fā)器:
- MemberTr_Update
- CREATE TRIGGER [dbo].[MemberTr_Update]
- ON [dbo].[Member]
- FOR UPDATE
- AS
- BEGIN
- IF @@ROWCOUNT = 0 RETURN
- SET NOCOUNT ON
事務(wù)處理:
- DECLARE @Operater NVARCHAR(50),@Member_nbr INT
- SELECT @Member_nbr = [Member_nbr] FROM deleted
- SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr
插入Audit 表中:
- INSERT INTO ....
- END
- GO
刪除觸發(fā)器:
- MemberTr_Delete
- CREATE TRIGGER [dbo].[MemberTr_Delete]
- ON [dbo].[Member]
- FOR DELETE
- AS
- BEGIN
- IF @@ROWCOUNT = 0 RETURN
- SET NOCOUNT ON
事務(wù)處理:
- DECLARE @Operater NVARCHAR(50),@Member_nbr INT
- SELECT @Member_nbr = [Member_nbr] FROM deleted
- SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr
插入Audit 表中:
- INSERT INTO ....
- END
- GO
按照以上的步驟操作就可以利用SQL觸發(fā)器或存儲(chǔ)過(guò)程來(lái)獲得程序登錄的用戶(hù)了。本文就介紹到這里,希望能對(duì)各位有所幫助。
【編輯推薦】
- 誤刪SQL Server日志文件后怎樣附加數(shù)據(jù)庫(kù)
- SQL Server 2005數(shù)據(jù)庫(kù)用戶(hù)權(quán)限管理的設(shè)置
- 淺析SQL Server數(shù)據(jù)庫(kù)專(zhuān)用管理員連接DAC的使用
- 在SQL SERVER 2005執(zhí)行存儲(chǔ)過(guò)程的權(quán)限分配問(wèn)題
- T-SQL行列相互轉(zhuǎn)換命令:PIVOT和UNPIVOT使用詳解
網(wǎng)站欄目:在SQL觸發(fā)器或存儲(chǔ)過(guò)程中獲取登錄用戶(hù)信息
網(wǎng)頁(yè)網(wǎng)址:http://m.fisionsoft.com.cn/article/djoodii.html


咨詢(xún)
建站咨詢(xún)
