database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 5839 게시물 읽기
No. 5839
트리거 에러좀 봐주세요
작성자
심규홍
작성일
2011-02-09 18:01ⓒ
2011-02-09 18:22ⓜ
조회수
5,809

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

 

 

ALTER TRIGGER [BTEMP_INS] on [dbo].[BTEMP]
 AFTER INSERT AS

Declare
@TUID          int, 
@TMONEY        int, 
@TIFLAG        char(1), 
@TANAME          varchar(20),
@ACOUNT         INT,
@CMONEY         INT


BEGIN
 select @TUID = UID from inserted
 select @TMONEY = AMONEY from inserted
 select @TIFLAG=IFLAG from inserted 
 select @TANAME =ANAME from inserted
    select @Acount=0


 SELECT COUNT(*) AS ACOUNT, SUM(AMONEY) AS AMONEY
            FROM ATEMP WHERE UID=@TUID

-- 여기서 카운트를 알아야 하는데 계속 카운트가 엉뚱한거로 들어가네요.. ㅠ.ㅠ;

    if @ACOUNT<>0
 BEGIN
       select AMONEY AS CMONEY FROM ATEMP WHERE UID=@TUID
    select @TMONEY=@CMONEY+@TMONEY
    UPDATE ATEMP SET AMONEY =@CMONEY where UID=@TUID
 END
 ELSE IF @ACOUNT=0
 BEGIN
      INSERT INTO ATEMP(ANAME, AMONEY, IFLAG) VALUES(@TANAME,@TMONEY,@TIFLAG)
    END
   
END 

이 글에 대한 댓글이 총 1건 있습니다.

Insert문장으로 [dbo].[BTEMP] 에 인서트 되는 ROW가 하나가 아닐 경우에 원하는 값이 들어가지 않을 수 있겠네요.

보통 하나씩 처리를 해야하는거면 inserted를 갖고 커서를 돌리고,

한번에 처리를 해도 되는거면, inserted를 통째로 돌려야할 듯 합니다.

지금 같이 inserted에서 @변수로 값을 받는 케이스면, 커서를 써야하지 않을까 싶네요.

정현호(errored)님이 2011-02-10 08:27에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5843여러개의 테이블을 한번에 삭제하는 방법
나그네
2011-02-15
6192
5841datediff 함수 질문입니다. [1]
송은진
2011-02-13
6941
5840프로시져관련 문의 입니다.
풍풍
2011-02-10
6108
5839트리거 에러좀 봐주세요 [1]
심규홍
2011-02-09
5809
5838최근 5년치 가져오기
ㅅㅅㅅ
2011-02-01
5663
5836백업 및 복원 작업 관련 문의 [2]
최지훈
2011-01-29
5865
5835DB LOCK 관련..
초보
2011-01-27
6094
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다