[CIN_BOARD] 이라는 테이블은
INT_BOARD_NO 칼럼이 PK 입니다.
비교할 값의 INT_BOARD_NO 이
없다면 > INSERT
있다면, 그리고 INT_CONTENT_TYPE 이 0 일 경우에만 > UPDATE
입니다.
DECLARE @CNT_TPY INT
SET @CNT_TPY =
(SELECT INT_CONTENT_TYPE
FROM [CIN_BOARD]
WHERE 1=1
AND INT_BOARD_NO = @INT_BOARD_NO)
IF EXISTS(@CNT_TPY)
--문제 되는 부분
BEGIN
IF(@CNT_TPY = 0)
BEGIN
UPDATE [CIN_BOARD]
SET ………………(업데이트문)
WHERE 1=1
AND INT_BOARD_NO = @INT_BOARD_NO
END
END
ELSE
BEGIN
INSERT INTO [CIN_BOARD]
……………… (인서트문)
END
--문제 되는 부분
IF EXIST 에서 또다시 SELECT 문을 써야 정상적 입니다만,
이렇게 되면 또 다시 SELECT 문을 써야 하는 부담이 있습니다.
SELECT 문을 한번만 쓰고 분기 할 수 있는 방법이 없을까요 ?
Comment 1
-
지영아빠
2022.11.07 16:47
merge문, @@rowcount 두가지겠네요.
참고요.
merge into CIN_BOARD as a
using (select 1 as dum) as b
on a.INT_BOARD_NO = @INT_BOARD_NO
where matched then
update set .... do update .....
when not matched then
insert (columns) values (vals...)
@rowcount = 0 이라는 말은 없다는 뜻이니 insert를 하라는 ...
update cin_board
set
....do update ....
where
int_board_no = @int_board_no
if @@rowcount = 0 begin
insert into cin_board
....
end if