在过去的几天里,我试图在MySQL中编写一个存储过程,并且我有一些可以让它工作的方法。希望这里有人可以给我一些输入:)试图学习MySQL和交易
我发布的例子是为asp.Net会员提供商创建一个新用户。我希望发送电子邮件和密码到数据库并获得int返回值,以验证userdeatils是否已写入数据库。
我使用MySQL DB 5.1(我认为)并将SQL写入web界面。
我有2个sidequestions,有人可以解释一下:) :) 1)我使用DELIMITER,但不知道它是什么。 2)我不知道如果我必须做其他事情,然后设置autocommit = 0让事务工作,或者我甚至必须这样做。
我知道我可以使用IF/ELSE语句而不是事务,但希望用一个来了解它是如何工作的。 (我希望用它之后很多)
的代码,我不能去上班:
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 ;
编辑: 该错误消息我得到的是:
你可能想为你的问题写一个更有意义的标题。 – 2009-12-16 09:08:46
什么是错误? 你永远不需要在一个事务中包装一个单独的动作,所以在这种情况下,这个事务根本就什么也不做。 – 2009-12-16 09:09:58
更改标题以尝试更好地描述问题。 – Jorn 2009-12-16 09:13:36