我之前从未尝试过使用触发器。
所以这是我想在检测到插入时触发的查询。
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=150
和kind=21/22/23
如果kind为21,则运行此查询,如果22运行此查询,则运行此查询。
类似的东西。
SELECT *
FROM LOG_CONNECT201211
WHERE GATENUM=150
AND (KIND=21 OR KIND=22 OR KIND=23)
正如您所见,这些表以201211
结尾,这意味着下个月该表将为201212
,因此我还需要这些表自动更改为当前月份表。
答案 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