CREATE PROC INSERT_BBS_THREAD
@Writer Varchar(20),
@Pass Varchar(20),
@Email Varchar(100)=NULL,
@Subject Varchar(100),
@Secret Bit=0,
@Notice Bit=0,
@Mode Bit=0,
@Reg_ip Varchar(15),
@Reg_time Varchar(15),
@Mod_time Varchar(15)=0,
@Contents Text,
@file_1 Varchar(100)=NULL,
@file_2 Varchar(100)=NULL,
@org_file_1 Varchar(100)=NULL,
@org_file_2 Varchar(100)=NULL,
@link_1 Varchar(100)=NULL,
@link_2 Varchar(100)=NULL,
@BID Char(10)
AS
SET NOCOUNT ON
DECLARE
@NewThread int,
@Prev_seq int,
@Next_seq int
SELECT @NewThread = ISNULL(MAX(thread),0) + 1000 FROM tbl_bbs_main WHERE BID = @BID
SELECT @Prev_seq = MAX(seq) FROM tbl_bbs_main WHERE BID = @BID AND thread < @NewThread
INSERT INTO tbl_bbs_main
(BID, thread, depth, writer, pass, email, subject, contents, reg_time, reg_time2, mod_time, mode, secret, notice, reg_ip, hit, vote, file_1, file_2, org_file_1, org_file_2, link_1, link_2, prev_seq, next_seq, comment_cnt)
Values
(@BID, @NewThread, 0, @Writer, @Pass, @Email, @Subject, @Contents, @Reg_time, getdate(), 0, @Mode, @Secret, @Notice, @Reg_ip, 1, 0, @file_1, @file_2, @org_file_1, @org_file_2, @link_1, @link_2, @Prev_seq, 0, 0)
--SELECT @Next_seq = scope_identity()
SELECT @Next_seq = @@IDENTITY
UPDATE tbl_bbs_main SET next_seq = @Next_seq WHERE BID = @BID AND thread = @Prev_seq
UPDATE tbl_bbs_set SET thread_cnt = thread_cnt+1 WHERE BID = @BID
GO
---------------------
이러한 저장프로시저를 생성하고 (게시판에서 새글(답변이 아닌)을 등록할때 사용하는 프로시저입니다.)
게시물을 등록하면, 별다른 오류 없이 정상적으로 등록이 됩니다.
tbl_bbs_set의 thread_cnt에도 정상적으로 1이 증가합니다
그런데 그 중간에 있는
UPDATE tbl_bbs_main SET next_seq = @Next_seq WHERE BID = @BID AND thread = @Prev_seq
이 UPDATE문이 안 됩니다..
tbl_bbs_main의 next_seq 컬럼을 확인하면 값이 들어있지 않습니다..
SELECT @Next_seq = @@IDENTITY 이 문장을 제외하여도 들어가지 않구요..
버전은 SQL Server 8.0입니다.
MySQL만 쓰다가 MSSQL을 사용하기 시작했는데
여러모로 막히는 부분이 많네요..
고수님들의 도움을 바랍니다.. |