update일괄작업할때 update트리거 0 3 1,762

by db초보 [DB 기타] mssql 트리거 [2022.11.29 13:41:11]


테이블이 2개가 있습니다.

a테이블에는 나이,성별,인원,나이합

b테이블에는 나이,성별,이름

b테이블에 나이가 10살인사람들모두 11살로 변경해야되서 update b set 나이='11' where 나이='10'

이렇게 업데이트 하고 b테이블에 update 트리거에는 아래처럼 되어있는데 성별만 없으면 sum(나이합)로 해서 a테이블 update를 하면 되는데 성별이 있어서 남/여 따로 해당하는 컬럼에 update를 해야되는데 어떻게 해야될지 몰르겠습니다.

update문을 성별별로 where조건에 넣을수가 없어서 update트리거에서 수정을 해야됩니다.

 

IF(UPDATE(나이))
    BEGIN
        DECLARE
            @U_나이 int,@U_성별 NVARCHAR(100),@U_인원 NVARCHAR(100),@U_나이합 NVARCHAR(100)
        
        SELECT
            @U_나이 = max(A.나이)
            ,@U_성별 = max(A.성별)
            ,@U_인원 = count(A.나이)
            ,@U_나이합 = sum(A.나이)
        FROM
        INSERTED A

        begin
        update aa1 set 나이합=@U_나이합, 인원=@U_인원 where 나이=@U_나이 and 성별=@U_성별
        end
        
    END

by 우리집아찌 [2022.11.29 21:44:38]

-- 이러면 되지 않을까요?    
SELECT            
 @U_나이 = max(A.나이) 
,@U_성별 = A.성별    
,@U_인원 = count(A.나이)             
,@U_나이합 = sum(A.나이)         
FROM INSERTED A 
WHERE A.나이 = 10 -- 나이 조건은 혹시 필요없나요?         
GROUP BY A.성별


by db초보 [2022.11.30 10:33:11]

알려주신 방식으로 해봤는데 나이 11로 업데이트하는데 남/여 따로 있어서 데이터 확인해보니깐 남자는 update가 안됐고 여자만 update가 됐습니다.


by 우리집아찌 [2022.11.30 10:51:03]

 

밑에 방식처럼 남 / 여 나눠서 해보세요.

두번 귀찮으시면 그냥 MERGE INTO 구문쓰셔도 될듯합니다.


SELECT            
 @U_나이 = max(A.나이) 
,@U_성별 = A.성별    
,@U_인원 = count(A.나이)             
,@U_나이합 = sum(A.나이)         
FROM INSERTED A 
WHERE  a.성별 = '남' 

update ..

SELECT            
 @U_나이 = max(A.나이) 
,@U_성별 = A.성별    
,@U_인원 = count(A.나이)             
,@U_나이합 = sum(A.나이)         
FROM INSERTED A 
WHERE  a.성별 = '여'

update ..

 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입