我想在触发器开始执行时得到一些值。但是,使用参数选项获取值在触发器中不可用。所以我决定将该特定值存储在一个变量中,并将其传递给我的存储过程中的Context_info
。
我在触发器中获得了这个价值。但我仍然只获得空值。但我通过将参数传递给存储过程手动尝试,它正确执行,并且Context_info
值也在该存储过程中正确显示。
但是当我在触发器中获取此值时,它显示为NULL。而sys.dm_exec_sessions
表context_info
值也未更新,但last_request_start_time
和last_request_end_time
正在更新。
任何人都可以指导我在错误的地方找到我的错误吗?
这是我的存储过程和触发器:
ALTER PROCEDURE [dbo].[dm_ApptResRecurrReasonRelViewSel]
(@IDLocation int,
@IDApptResource int,
@StartDate datetime,
@IDApptResRecurr int,
@ClientID varchar(50) )
AS
SET NOCOUNT ON;
DECLARE @context_info varbinary(100);
SET @context_info = CAST(@ClientID as varbinary(100));
SET CONTEXT_INFO @context_info;
etc....
触发
ALTER TRIGGER [dbo].[xC2C_ADT_Upd]
ON [dbo].[dmAppt]
FOR INSERT, UPDATE
AS
BEGIN
If Not Exists (Select top 1* from inserted)
Return
declare @ADT_ID UniqueIdentifier
declare @personuid int
declare @ApptID int
select @personuid = PID, @ApptID = IDAppt
from inserted
set @ADT_ID = NewID()
declare @MSG_Type varchar(1)
declare @AddDate datetime
declare @LastUpdateDate datetime
declare @ServerID [varchar](50)
declare @ClientDB [varchar](max)
declare @ClientID [varchar](50)
set @ServerID = Convert(varchar(50),CONNECTIONPROPERTY('local_net_address'))
set @ClientDB = db_name()
set @ClientID = CAST(CONTEXT_INFO() as varchar(50))