【发布时间】:2013-09-16 05:57:12
【问题描述】:
我需要创建一个后触发器。 (仅在触发后)。我认为我在正确的轨道上,但似乎无法让它正确执行。它似乎总是执行触发器并在所有插入语句上显示错误消息,而不是仅在存在重复时。这就是我所拥有的;
CREATE TRIGGER Copies
ON table
AFTER INSERT
AS
Declare @number int
Set @number = (Select Count(*) from inserted)
If @number >0
(
SELECT *
FROM table O
JOIN inserted AS i
ON t.q_id = i.q_id
WHERE O.username = i.username
AND t.q_id = i.q_id
)
BEGIN
RAISERROR ('Already answered', 16, 1);
ROLLBACK TRANSACTION;
RETURN
END;
GO
附言。 请不要回复触发器。谢谢:)
【问题讨论】:
-
简单注释t在哪里被别名?
-
还有为什么你尝试使用 () 封装条件语句时没有报错...不应该是 IF(@Number>0) BEGIN ....END ELSE BEGIN rolbackcode这里END
-
抱歉,SELECT * FROM table O -- 这个 O 意味着要插入 JOIN,因为我在脚本中对其进行了更改。没有区别:/
-
sql server 管理工作室
-
sql server management studio 不是 DBMS,它只是一个用于访问 SQL Server 的程序(尽管它很智能)。
标签: sql triggers conditional