Nagendra Singh Kushwah Ответов: 1

Как мы можем использовать значение сеанса в триггере в SQL server 2012 и вставить его в таблицу?


How can we use session value in trigger in SQL Server 2012 and insert into a table? I created a session but getting confuse, how can i use session value into a trigger. I'm creating a log table for view all logs that which action is acted in main table. and please tell me how can I update table with update Trigger with new session value and ID fetch from main table to update data. In given code @ActionBy value I want from new session.
How can I do this? Please let me know about this.


Что я уже пробовал:

CREATE TRIGGER EpaperTrgrUpdate
       ON EPaper
AFTER INSERT
AS
BEGIN
       SET NOCOUNT ON;
 
       DECLARE @EpaperId INT
	   DECLARE @Date datetime
	   DECLARE @ActionBy nvarchar(50)
	   DECLARE @Action varchar(50)
 
       SELECT @EpaperId = EPaper.SrNo, @Date = date, @ActionBy = EPaper.ActionBy      
       FROM EPaper
 
	   IF UPDATE(IMG)
       BEGIN
              SET @Action = 'Image Updated'
       END
 
       IF UPDATE(Date)
       BEGIN
              SET @Action = 'Date Updated'
       END

       INSERT INTO Epaper_Log
       VALUES(@EpaperId, @Date, @Action, @ActionBy)
END

1 Ответов

Рейтинг:
5

ZurdoDev

Ты не можешь. У вас есть доступ к вставленным и удаленным таблицам, поэтому вам нужно будет добавить столбец в одну из таблиц и сначала установить его, а затем прочитать его в триггере.

Кроме того, способ записи триггера-это не очень хороший способ записи триггеров, потому что он работает только для 1 записи одновременно. Если вы когда-нибудь вставите более одной записи одновременно, этот триггер не будет работать.

На самом деле это даже не будет работать для одной записи, потому что вы не квалифицируете свое предложение WHERE, что означает, что вы получите последнюю запись в зависимости от того, как SQL читает в таблице EPaper.