我想在触发器开始执行时获得一些价值。但是,使用参数选项获取值在触发器中不可用。所以我决定将该特定值存储在一个变量中并将其传递给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))