我有這個存儲過程:選擇....到錯誤的MySQL
delimiter/
drop procedure if exists registration/create procedure registration(email varchar(50), pass varchar(50), first_name varchar(30), last varchar(30), address varchar(100), city varchar(30), state_id int, zip varchar(20), phone varchar(15), alt_phone varchar(15), outlet varchar(100), url varchar(255), bio text, out response int, out photo_location varchar(40), image_type varchar(10), out emailer varchar(20), out max_row int)
start_:begin
start transaction;
insert into registration_application values(null, email, PASSWORD(pass), first_name, last, address, city, state_id, zip, phone, alt_phone, outlet, url, bio);
set emailer=email;
select id into max_row from registration_application where email=email order by id;
commit;
set response= 1;
end start_;
id是主鍵,這是auto_incremented和電子郵件領域具有獨特的索引;所以,2行不可能包含相同的電子郵件;然而,無論何時,當我調用該過程時,「select ... into」總是返回多於一行,即使該電子郵件地址只存在一行。 據我所知,我可以通過使用限制1來限制它返回只有一行,'使用ID按順序desc';然而,我的問題是這些:
- 問題是在MySQL中的錯誤?我看到很多人在網上遇到類似的問題。
- 因爲我不知道什麼位置我正在尋找的id(因爲select..into顯然返回多個行),有沒有辦法確保正確的id總是會被返回? 謝謝。
你'這裏電子郵件= email'這幾乎總是如此。難怪你選擇了很多(意思是ALL)行。 –
我想這個問題來自於爲表格列和過程參數使用相同的名稱('email')。 –