1. 아이디는 중복가입될 수 없다.
2. 학번은 중복될 수 없다.(primary key 설정)
3. 같은 이름이라고 하더라도 학번이 다르면 가입될 수 있다.
4. 아이디는 최소 6자리 부터 12자리까지 입력이 가능하다.
5. 비밀번호는 최소 4자리 부터 12자리 까지 입력이 가능하다.
6. 아이디와 비밀번호는 같을 수 없다.
7. 아이디는 영문, 숫자, 언더바(_), 하이픈(-) 만 사용할 수 있다.
8. 아이디의 첫글자는 숫자가 될 수 없다.
--회원 테이블 생성
create table member
(
mIdx int not null,--회원고유번호
mName nvarchar(5) not null, --회원이름
mHak char(9) primary key not null, --학번
mId varchar(12) not null, -- 회원아이디
mPwd varchar(12) not null, -- 회원비밀번호
mRegDate datetime default getdate(), -- 가입일
mType bit default 0 not null -- 회원분류(0 : 정상, 1 : 졸업)
)
go
--가입 트리거
create trigger TRG_MEM_INSERT on member
instead of insert
as
begin
set nocount on;
begin tran
begin try
declare @mId varchar(12)
declare @mHak char(9)
declare @mName nvarchar(5)
select @mId=mId, @mHak=mHak, @mName=mName from inserted
declare @errNum int
set @errNum = 0
declare @errText nvarchar(100)
set @errText = 'nothing'
--글번호 셋팅
declare @idxNum int
select @idxNum = MIN(mIdx) from member
--번호설정
if @idxNum is null
begin
set @idxNum = 1
end
else
begin
select top 1 @idxNum = rn
from
(
select mIdx,(row_number() over (order by mIdx)) as rn
from member
) TT
where mIdx <> rn
end
if @idxNum is null
begin
set @idxNum = @idxNum + 1
end
if exists(select * from member where mId=@mId)
begin
set @errNum = 1
set @errText = '중복된 아이디가 있습니다.'
end
else if exists(select * from member where mHak=@mHak and mName=@mName)
begin
set @errNum = 2
set @errText = '이미 가입이 되어 있습니다.'
end
else
begin
insert into member (mIdx, mName, mHak, mId, mPwd)
select @idxNum, mName, mHak, mId, mPwd from inserted
end
end try
begin catch
if (@@trancount > 0)
rollback tran
set @errNum = 2
set @errText = '이미 가입이 되어 있습니다.'
end catch
if(@@trancount > 0)
commit tran
select @errNum as errNum, @errText as errText
end
errNum 과 errText 값을 반환한다.
--회원가입 프로시져
create proc MEM_INSERT
(
@mName nvarchar(5),
@mHak char(9),
@mId varchar(12),
@mPwd varchar(12)
)
as
begin
insert into member (mName, mHak, mId, mPwd) values (@mName, @mHak, @mId, @mPwd)
end
--정상가입 (0, nothing)
MEM_INSERT '정우창', '200872032', 'memid','passwd'
--아이디가 같을경우 (1, 중복된 아이디가 있습니다.)
MEM_INSERT '정우창1', '200872033', 'memid','passwd1'
-- 학번이 이미 있을경우 (2, 이미 가입이 되어 있습니다.)
MEM_INSERT '정우창1', '200872032', 'memid1','passwd1'
--이름만 다른 경우 (1, 중복된 아이디가 있습니다.)
MEM_INSERT '정우창1', '200872032', 'memid','passwd'
댓글 영역