0

我有几个问题我不确定,如果有人可以帮助我,那将是一个很大的帮助

1)我想返回我的代码,用户成功插入数据库它也没有失败。我会按照 If Last_Insert_id is not null 的方式执行此操作吗?返回一条消息说插入。

2) last_isert_id 将特定于插入的用户,即一次插入一个。我需要做一个锁来实现这一点。即,例如,如果我有一个配置文件表并且我得到了 last_isert_id,我可以保证是否有很多人同时注册每个 id 将用于每个用户。还是我需要做表锁定。

在改进方面最受欢迎的任何其他反馈

开始

DECLARE _user_role_permission int;
DECLARE _user_id int;
DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;

SET _user_role_permission = (SELECT id FROM user_role_permission WHERE role_permission = in_role_permission);

START TRANSACTION;

INSERT INTO user_site(username, email, status, password, password_strategy, salt, requires_new_password, reset_token,
                             login_time, lock_status, login_ip, created_ip, activation_key, validation_key,
                             create_time, update_time)
                  VALUES(in_username, in_email, in_status, in_password, 
                            in_password_strategy, in_salt, in_requires_new_password,
                             in_reset_token, in_login_time, in_lock_status, in_login_ip,
                             in_created_ip, in_activation_key, in_validation_key,
                             in_create_time, in_update_time);   

SET _user_id = LAST_INSERT_ID();                        

INSERT INTO user(user_site_id) VALUES(_user_id);

INSERT INTO user_permission(user_id, permission_id)VALUES (_user_id,_user_role_permission); 

COMMIT;

END
4

1 回答 1

0
  1. 可以使用SELECT @@warning_count;and SELECT @@error_count;afterINSERT看是否成功。我是的,它将返回 0 行。

  2. last_insert_id() 仅限于当前连接,所以无论有多少并发连接到数据库,你总是会得到正确的值。

于 2013-02-27T22:47:12.807 回答