트리거 내에서 GROUP BY
절이있는 임시 테이블을 만들고 사용해야하므로 어려움이 있습니다.TRIGGER 내에서 GROUP BY로 임시 테이블 만들기
내 시도 : 내가 끝에 도달 트리거 이후 삭제됩니다 두 개의 임시 테이블을 사용하기 위해 노력하고있어 여기에
.
먼저 나는 #Temptable
과 방아쇠를 만듭니다.
CREATE TABLE #TempTable (admID smallint, diagID smallint);
CREATE TRIGGER tr_newTest
ON Adm_Diag
FOR INSERT
AS
BEGIN
...
END
삽입 된 테이블 만 현재 INSERT
및 UPDATE
문 제가 #TempTable
에 INSERT
여러 및 UPDATE
문을 통과하고 있습니다에 대한 행이 포함되어 있기 때문에
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