1

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

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

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 运行此查询,如果 23 运行此查询。

类似的东西。

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

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

4

1 回答 1

1

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

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
于 2012-11-11T08:09:50.720 回答