아고 저번에 보낸 메일이 안가서 돌아왔네요
몇가지 질문이 있는데요
첫번째 질문은 프로시져에서
Select 후에 Update를 하거든요 근데 거기서 자꾸 fetch row 에러가 뜨네요
프로시져안에서 두종류의 쿼리를 날려주는것이 잘못된 방법인가요
근데 에러가 열번에 한번꼴로 나는거라...동작될때는 잘되고
참..
프로시져 소스입니다.
Create Procedure login_confirmSPC_A(
v_user_id varchar(10),
v_user_passwd varchar(8)
)
Returning int,varchar(16),varchar(12),varchar(50),int,char(20),int,int,varchar(8);
Define r_iuser_id int;
Define r_login_id varchar(16);
Define r_iuser_name varchar(12);
Define r_email varchar(50);
Define r_type int;
Define r_former_id char(20);
Define r_epoint int;
Define r_emoney int;
Define r_passwd varchar(8);
Set isolation to dirty read;
Select iuser_id,login_id,iuser_name,email,type,former_id,epoint,emoney,passwd Into r_iuser_id,r_login_id,r_iuser_name,r_email,r_type,r_former_id,r_epoint,r_emoney,r_passwd
From iuser
Where (lower(login_id)=lower(v_user_id)) and (passwd=v_user_passwd) and (is_used='t');
--Update iuser Set last_date=current YEAR TO SECOND,login_count=login_count+1 Where (lower(login_id)=lower(v_user_id)) and (passwd=v_user_passwd) and (is_used='t');
Return r_iuser_id,r_login_id,r_iuser_name,r_email,r_type,r_former_id,r_epoint,r_emoney,r_passwd;
End Procedure;
지금 현재 Update문은 --로 주석처리를 해두엇구요 이부분 주석을 풀면 가끔 에러가 생깁니다.
그리고 두번재질문
alter 로 프라이머리키도 변경이 가능합니까?
현재 테이블이
Create Table diary(
diary_id serial8 not null primary key,
iuser_id int not null References iuser(iuser_id),
subject varchar(60) not null,
content lvarchar,
write_year smallint not null,
write_month smallint not null,
write_date smallint not null,
status smallint,
weather smallint,
background_file varchar(100)
);
이렇게 생성되어있는데 프라이머리키를 diary_id 에서 빼내고
primary key(iuser_id,write_year,write_month,write_date)
로 주려고하는데 alter 법을 가르쳐주시면 감사하겟습니다.
그리고 마지막 질문 위 diary테이블에 관계되는것인데
프라이머리키를 초반에 잘못주는바람에
중복되는 데이터가 많이 들어갔습니다 물론 jsp에서는 에러를 발생시키구요
예를들어 다음과 같은데이터가 잘못들어가 있으면
diary_id iuser_id subject content write_year write_month write_date
1714 4556 바둑학원에서... 나는 오늘 바둑학원... 2001 7 24
1715 4556 바둑학원에서... 나는 오늘 바둑학원... 2001 7 24
1714 4556 바둑학원에서... 나는 오늘 바둑학원... 2001 7 24
이런식으로 중복되어 들어가는데이터가 있는데 이것을 하나만 남기고 삭제를 해야하는데
diary_id iuser_id subject content write_year write_month write_date
1714 4556 바둑학원에서... 나는 오늘 바둑학원... 2001 7 24
이것만 남게요 위와같은 일을하려면 어떠한 쿼리와 프로시져를 만들어야 할까요
그럼 답변기다리겟습니다.
|