프로그램 상에서는
update A
set edit = 'Y'
where date = '2016.11.09'
이렇게 SQL문을 써서 업데이트 하구여
업데이트 대상건수는 30000건 정도 됩니다.
A 테이블의 트리거에
A테이블의 edit필드에 "Y" 값이 업데이트되면
B,테이블이 업데이트 되게했습니다
select @seq = seq, @edit = 'Y' from inserted
if update(edit) and @edit = 'Y'
begin
update B
set count = count + 1
where seq = @seq
end
이런식으로 트리거에 작성해서 업데이트 됐는데여
어느순간부터 데이터가 업데이트 안되서
DECLARE A_edit CURSOR FOR
select seq
from inserted
OPEN A_edit
FETCH NEXT FROM A_edit
INTO @seq
update B
set count = count + 1
where seq = @seq
FETCH NEXT FROM A_edit
INTO @seq
END
CLOSE A_edit
이런식으로 커서문으로 변경 해줘야 되던데여
그사이 바꾼건 A 테이블의 edit 필드를 인덱스로 생성 한겁니다
인덱스로 잡은 필드에 대한 업데이트는
아래와같이 커서문을 써야 되는건가여?
Comment 1
-
처리짱
2016.11.09 18:57
inserted는 테이블 입니다
select @seq = seq, @edit = 'Y' from inserted
이렇게 하면은 @seq에 하나의 값만 나오겠지요?
update B
set count = count + 1
where seq = @seq
일케하면은 3만개 업데이트 중에 한개만 업데이트가 되겠지요..
update B
set count = count + 1
FROM B,
insrted as c
WHERE b.seq = c.seq
이런식으로 업데이트가 되야 맞지 않을까요..
커서로 돌린것은 seq가 계속 바뀌니 업데이트가 계속 되었을 거고요.