SQL Server插入条件触发器

时间:2012-11-11 06:52:34

标签: sql sql-server triggers insert

我之前从未尝试过使用触发器。

所以这是我想在检测到插入时触发的查询。

UPDATE USER_CHECK_LOGIN
   SET CHECKLOGIN = 2
 WHERE USER_CHECK_LOGIN.USER_KEY IN
       (SELECT e.USER_KEY
          FROM XTREME.game.dbo.CHAR_DATA0 AS e
         INNER JOIN XTREME.gamelogs.dbo.LOG_USING_DEPOT201211 AS p
               ON e.CHAR_KEY = p.CHAR_KEY
         WHERE p.GATENUM = 150
       )
   AND USER_CHECK_LOGIN.CHECKLOGIN = 0
   AND USER_CHECK_LOGIN.USER_KEY!=51;

但问题是我一直在寻找,但无法找到如何使用条件。

我需要的是在名为LOG_CONNECT201211的表上完成插入时触发的脚本,并且该插入包含gatenum=150kind=21/22/23

如果kind为21,则运行此查询,如果22运行此查询,则运行此查询。

类似的东西。

SELECT *
  FROM LOG_CONNECT201211
 WHERE GATENUM=150
   AND (KIND=21 OR KIND=22 OR KIND=23)

正如您所见,这些表以201211结尾,这意味着下个月该表将为201212,因此我还需要这些表自动更改为当前月份表。

1 个答案:

答案 0 :(得分:1)

为什么每个月都需要创建表格?最好在表LOG_CONNECT列中添加datetime。因此,可以检查一次触发时创建的当前月份。

CREATE TRIGGER dbo.triggerName ON LOG_CONNECT
FOR INSERT
AS
BEGIN
  IF EXISTS (
             SELECT 1
             FROM inserted i
             WHERE GATENUM=150 AND KIND IN (21, 22, 23) AND DATEPART(mm, newColumnDate) = DATEPART(mm, GETDATE())
             )
  BEGIN
    ...your logic
  END 
END