我需要在触发器中创建和使用带有GROUP BY
子句的临时表,但我在这样做时遇到了困难。使用GROUP BY在TRIGGER中创建临时表
我尝试:
在这里,我试图使用这些触发后下降了两个临时表到达结束。
首先我创建一个#Temptable
和触发器。
CREATE TABLE #TempTable (admID smallint, diagID smallint);
CREATE TRIGGER tr_newTest
ON Adm_Diag
FOR INSERT
AS
BEGIN
...
END
由于插入的表格只包含当前INSERT
和UPDATE
声明我路过几个INSERT
和UPDATE
语句#TempTable
行。
DECLARE @admID smallint
SELECT @admID = Adm_ID
FROM inserted
DECLARE @diagID smallint
SELECT @diagID=Diag_ID
FROM inserted
INSERT INTO #TempTable VALUES (@admID, @diagID)
现在有了这个数据,我想创建一个临时表组#TempTable
行:
SELECT *
INTO #TempGroupTable
FROM
(
SELECT admID, COUNT(*) as Diag
FROM #TempTable
GROUP BY admID
) t1
WHERE Diag > 2
整个脚本
CREATE TABLE #TempTable (admID smallint, diagID smallint);
CREATE TRIGGER tr_newTest
ON Adm_Diag
FOR INSERT
AS
BEGIN
DECLARE @admID smallint
SELECT @admID = Adm_ID
FROM inserted
DECLARE @diagID smallint
SELECT @diagID=Diag_ID
FROM inserted
INSERT INTO #TempTable VALUES (@admID, @diagID)
-- Below I'm tring to create #TempGroupTable
SELECT *
INTO #TempGroupTable
FROM
(
SELECT admID, COUNT(*) as Diag
FROM #TempTable
GROUP BY admID
) t1
WHERE Diag > 2
END
执行触发器后,我得到一个错误:
Msg 208, Level 16, State 0, Line 41 Invalid object name '#TempGroupTable'.
如何创建#TempGroupTable
?
为什么不使用物理表而不是临时表。使用'#'的临时表不能在会话之外工作。 – Esty
@TanjimRahman我不需要在会话之外使用临时表。正如我所说,只是在触发期间。 – Jazz
使用双磅符号,'## TempGroupTable' – Rene