成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在SQL觸發器或存儲過程中獲取登錄用戶信息

數據庫 SQL Server
本文詳細介紹了怎樣在SQL觸發器或存儲過程中獲取程序登錄用戶信息的過程,希望能對讀者有所幫助。

SQL觸發器存儲過程中,可以獲取程序登錄的用戶。下面我們就開始介紹,怎樣實現在SQL觸發器或存儲過程中獲取在程序登錄的用戶。在插入,更新或刪除的存儲過程,把登錄程序當前用戶傳入進去。在存儲過程中,再把相關信息存入局部(#)臨時表中,這樣子,在觸發器即可獲取了。

下面代碼示例,以一個[Member]表作例,可以參詳:

  1. Member  
  2.  
  3. CREATE TABLE Member  
  4.  
  5. (  
  6.  
  7. Member_nbr INT IDENTITY(1,1) PRIMARY EKY NOT NULL,  
  8.  
  9. [Name] NVARCHAR(30),  
  10.  
  11. Birthday DATETIME,  
  12.  
  13. Email NVARCHAR(100),  
  14.  
  15. [Address] NVARCHAR(100)  
  16.  
  17. )  
  18.  
  19. GO 

插入存儲過程:

  1. MemberSp_Insert  
  2.  
  3. CREATE PROCEDURE MemberSp_Insert  
  4.  
  5. (  
  6.  
  7. --Other parameter  
  8.  
  9. @Operater NVARCHAR(50) --帶到此參數,可從程序的用戶傳至數據庫  
  10.  
  11. )  
  12.  
  13. AS  
  14.  
  15. BEGIN 

處理插入事務:

  1. ---INSERT INTO [dbo].[Member] (xxx) VALUES(xxx) 

把相關信息存入臨時表,方便在觸發器時取到:

  1. IF OBJECT_ID('#AuditWho') IS NOT NULL  
  2.  
  3. DROP TABLE [#AuditWho]  
  4.  
  5. CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))  
  6.  
  7. INSERT INTO [#AuditWho] VALUES(SCOPE_IDENTITY(),@Operater)  
  8.  
  9. END  
  10.  
  11. GO 

更新存儲過程:

  1. MemberSp_Update  
  2.  
  3. CREATE PROCEDURE MemberSp_Update  
  4.  
  5. (  
  6.  
  7. --Other parameter  
  8.  
  9. @Member_nbr INT,  
  10.  
  11. @Operater NVARCHAR(50) --帶到此參數,可從程序的用戶傳至數據庫  
  12.  
  13. )  
  14.  
  15. AS  
  16.  
  17. BEGIN 

處理更新事務:

  1. ---UPDATE [dbo].[Member] SET [xxx] = xxx, ... WHERE [Member_nbr] = @Member_nbr 

把相關信息存入臨時表,方便在觸發器時取到:

  1. IF OBJECT_ID('#AuditWho') IS NOT NULL  
  2.  
  3. DROP TABLE [#AuditWho]  
  4.  
  5. CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))  
  6.  
  7. INSERT INTO [#AuditWho] VALUES(@Member_nbr,@Operater)  
  8.  
  9. END  
  10.  
  11. GO 

刪除存儲過程:

  1. MemberSp_Delete  
  2.  
  3. CREATE PROCEDURE MemberSp_Delete  
  4.  
  5. (  
  6.  
  7. @Member_nbr INT,  
  8.  
  9. @Operater NVARCHAR(50) --帶到此參數,可從程序的用戶傳至數據庫  
  10.  
  11. )  
  12.  
  13. AS  
  14.  
  15. BEGIN 

處理刪除事務:

  1. ---DELETE FROM [dbo].[Member] WHERE [Member_nbr] = @Member_nbr 

把相關信息存入臨時表,方便在觸發器時取到:

  1. IF OBJECT_ID('#AuditWho') IS NOT NULL  
  2.  
  3. DROP TABLE [#AuditWho]  
  4.  
  5. CREATE TABLE [#AuditWho] (PrimaryKey INT,Operater NVARCHAR(50))  
  6.  
  7. INSERT INTO [#AuditWho] VALUES(@Member_nbr,@Operater)  
  8.  
  9. END  
  10.  
  11. GO 

#p#

從上面的存儲過程,用戶相關的信息(應用程序的用戶信息)已經在存儲過程中存入臨時表中,接下來,在觸發器,怎樣獲取呢??梢詤⒖枷旅娴挠|發器代碼:

插入觸發器:

  1. MemberTr_Insert  
  2.  
  3. CREATE TRIGGER [dbo].[MemberTr_Insert]   
  4.  
  5. ON [dbo].[Member]  
  6.  
  7. FOR INSERT  
  8.  
  9. AS  
  10.  
  11. BEGIN  
  12.  
  13. IF @@ROWCOUNT = 0 RETURN  
  14.  
  15. SET NOCOUNT ON 

事務處理:

  1. DECLARE @Operater NVARCHAR(50),@Member_nbr INT  
  2.  
  3. SELECT @Member_nbr = [Member_nbr] FROM inserted  
  4.  
  5. SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr 

插入Audit 表中:

  1. INSERT INTO ....  
  2.  
  3. END  
  4.  
  5. GO 

更新觸發器:

  1. MemberTr_Update  
  2.  
  3. CREATE TRIGGER [dbo].[MemberTr_Update]   
  4.  
  5. ON [dbo].[Member]  
  6.  
  7. FOR UPDATE  
  8.  
  9. AS  
  10.  
  11. BEGIN  
  12.  
  13. IF @@ROWCOUNT = 0 RETURN  
  14.  
  15. SET NOCOUNT ON 

事務處理:

  1. DECLARE @Operater NVARCHAR(50),@Member_nbr INT  
  2.  
  3. SELECT @Member_nbr = [Member_nbr] FROM deleted  
  4.  
  5. SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr 

插入Audit 表中:

  1. INSERT INTO ....  
  2.  
  3. END  
  4.  
  5. GO 

刪除觸發器:

  1. MemberTr_Delete  
  2.  
  3. CREATE TRIGGER [dbo].[MemberTr_Delete]   
  4.  
  5. ON [dbo].[Member]  
  6.  
  7. FOR DELETE  
  8.  
  9. AS  
  10.  
  11. BEGIN  
  12.  
  13. IF @@ROWCOUNT = 0 RETURN  
  14.  
  15. SET NOCOUNT ON 

事務處理:

  1. DECLARE @Operater NVARCHAR(50),@Member_nbr INT  
  2.  
  3. SELECT @Member_nbr = [Member_nbr] FROM deleted  
  4.  
  5. SELECT @Operater = [Operater] FROM [#AuditWho] WHERE [PrimaryKey] = @Member_nbr 

插入Audit 表中:

  1. INSERT INTO ....  
  2.  
  3. END  
  4.  
  5. GO 
按照以上的步驟操作就可以利用SQL觸發器或存儲過程來獲得程序登錄的用戶了。本文就介紹到這里,希望能對各位有所幫助。

【編輯推薦】

  1. 誤刪SQL Server日志文件后怎樣附加數據庫
  2. SQL Server 2005數據庫用戶權限管理的設置
  3. 淺析SQL Server數據庫專用管理員連接DAC的使用
  4. 在SQL SERVER 2005執行存儲過程的權限分配問題
  5. T-SQL行列相互轉換命令:PIVOT和UNPIVOT使用詳解
責任編輯:趙鵬 來源: 博客園
相關推薦

2011-07-14 08:56:34

Sql Server

2010-05-26 17:57:44

MySQL 觸發器

2024-01-19 09:37:19

MySQL數據庫

2011-03-03 09:30:24

downmoonsql登錄觸發器

2010-07-16 10:19:31

2010-04-26 14:12:23

Oracle使用游標觸

2011-03-28 10:05:57

sql觸發器代碼

2019-04-30 15:28:46

數據庫存儲過程觸發器

2010-11-12 09:18:13

SQL Server存

2010-05-19 11:25:46

MySQL觸發器

2009-12-24 17:52:05

WPF觸發器

2011-08-15 15:56:31

SQL Server

2024-04-25 09:43:42

PostgreSQL數據庫關系型數據庫

2011-05-20 14:06:25

Oracle觸發器

2010-09-01 16:40:00

SQL刪除觸發器

2010-09-13 17:03:34

sql server觸

2009-04-07 13:56:03

SQL Server觸發器實例

2010-10-19 15:31:40

sql server觸

2010-04-19 10:43:27

SQL Server

2018-08-10 09:40:02

數據庫MySQL存儲過程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲 中文 欧美 日韩 在线观看 | 一级二级三级在线观看 | 中文字幕第一页在线 | 性一区 | 黄色毛片在线观看 | 国产片淫级awww | 亚洲成人一区 | 久久精品一 | 国产精品国色综合久久 | 日韩福利| 男人电影天堂 | 精品国产成人 | 一区二区三区四区视频 | 一区中文| 亚洲精品视频在线观看免费 | 亚洲 欧美 日韩在线 | 精品久久久久久亚洲精品 | 成人一区av偷拍 | 国产日韩在线观看一区 | 在线永久看片免费的视频 | 在线a视频网站 | 国产精品99久久久久久久久久久久 | 国产免费一区二区三区免费视频 | 男女那个视频 | 午夜激情视频在线 | 日韩中文字幕视频在线 | 亚洲综合在线视频 | 毛片久久久 | 噜噜噜色网 | 九九免费在线视频 | 国产精品一区二区三区四区 | 中文字幕影院 | 亚洲欧美精品 | 国产精品一区一区 | 国产精品久久久久久福利一牛影视 | 9porny九色视频自拍 | 超碰在线97国产 | 久久伊人精品 | 水蜜桃久久夜色精品一区 | 久久亚洲精品国产精品紫薇 | 国产精品久久久久久久久久尿 |