【发布时间】:2012-11-11 11:17:04
【问题描述】:
这是我第一次使用触发器。
我的触发器没有被触发,请帮忙。
CREATE TRIGGER sbhack_autoban
ON LOG_CONNECT201211
FOR INSERT
AS
BEGIN
/* query to run if single or multiple data is
inserted into LOG_CONNECT201211 table */
UPDATE login.dbo.USER_CHECK_LOGIN
SET login.dbo.USER_CHECK_LOGIN.CHECKLOGIN = 2
WHERE login.dbo.USER_CHECK_LOGIN.USER_KEY IN
(SELECT e.USER_KEY
FROM game.dbo.CHAR_DATA0 AS e
INNER JOIN gamelogs.dbo.LOG_USING_DEPOT201211 AS p
ON e.CHAR_KEY = p.CHAR_KEY
WHERE p.GATENUM = 150)
AND login.dbo.USER_CHECK_LOGIN.CHECKLOGIN = 0
AND login.dbo.USER_CHECK_LOGIN.USER_KEY != 51;
END
假设在 LOG_CONNECT201211 表中插入了条目,则在 BEGIN : END 中运行查询。但是即使我在LOG_CONNECT201211 中插入了多个数据,也没有发生任何事情。
【问题讨论】:
-
您的触发器没有引用
INSERTED是故意的吗? -
您没有在触发器中的任何位置引用
Inserted伪表似乎很奇怪......您基本上是在升级一切 - 不仅仅是行实际上是插入的...... -
嗯,抱歉,这是我第一次使用触发器。如果我做错了什么,你能告诉我吗?
-
您的触发器应该根据插入的行做一些事情——这些可以在您的触发器的
Inserted伪表中找到。这里的这个只是一直更新其他表并且不考虑/不使用已插入行中的任何信息....所以问题是:如果您插入 10 个新行-在您的触发器中,您到底想对这些做什么?你想达到什么目的? -
类似条件的东西?你能帮我么?谢谢。
标签: sql sql-server triggers insert