지난 며칠 동안 나는 MySQL에 저장 프로 시저를 작성하려고 노력했으며 일부는 작동하도록 truble했습니다. 여기 누군가가 내게 어떤 의견을 줄 수 있기를 바랍니다 :)MySQL과 트랜잭션을 배우려고 시도
내가 게시 한 예는 asp.Net 회원 서비스 제공 업체가 새로운 사용자를 만드는 것입니다. DB에 전자 메일과 암호를 보내고 intde return을 얻어 userdeatils가 DB에 기록되었는지 확인합니다.
저는 MySQL DB 5.1을 사용하고 웹 인터페이스에 SQL을 작성합니다.
나는 2 개의 사이드 퀘스트가 있는데, 누군가도 그렇게 설명 할 수 있겠는가 :) : 1) 나는 DELIMITER를 사용하지만, 그것이 무엇을하는지 모른다. 2) 트랜잭션을 작동 시키려면 autocommit = 0으로 설정해야하는지, 아니면 수행해야하는지조차 모르겠다.
나는 IF/ELSE 문을 트랜잭션 대신 사용할 수 있지만 어떻게 작동하는지 알아보기 위해 하나의 트랜잭션으로 IF 및 ELSE 문을 사용할 수 있음을 알고 있습니다.
코드 (나는 나중에 alot을 사용할 것으로 예상) 나는 동작하지 않습니다 :
DELIMITER //
CREATE DEFINER=`websharp_dk`@`%` PROCEDURE `CreateUser`(
IN _username VARCHAR(100),
IN _Password VARCHAR(100))
RETURNS INT
BEGIN
SET autocommit = 0;
DECLARE return_value INT;
BEGIN TRY
START TRANSACTION
INSERT INTO User
(Email
,Password
,Failed_Password_Count
,Creation_Date)
VALUES
(_username
,_Password
,0
,Datetime.Now())
SET return_value = 1;
COMMIT;
END TRY
BEGIN CATCH
ROLLBACK
SET return_value = 0;
END CATCH
BEGIN FINALLY
RETURN return_value;
END FINALLY
END//
DELIMITER ;
편집 : 내가 오류 메시지는 다음과 같습니다
질문에 더 의미있는 제목을 쓸 수 있습니다. –
무엇이 오류입니까? 트랜잭션에서 단일 액션을 래핑 할 필요가 없으므로이 경우 트랜잭션이 전혀 수행하지 않습니다. –
문제를보다 자세히 설명하기 위해 제목을 변경했습니다. – Jorn