我有一些我不确定的问题,如果有人可以帮助我,那将是一个很大的帮助
1)我想回到我的代码,用户成功插入数据库,也没有失败。我是否会按照If Last_Insert_id不为空的方式执行此操作?返回一条说插入的消息。
2)last_isert_id将特定于插入的用户,即一次插入一次。我需要做一个锁来实现这一目标。即如果我有一个配置文件表,例如我得到了last_isert_id,我可以保证,如果有很多人一次性注册,每个用户都会有一个id。或者我是否需要进行表锁定。
在改进方面最受欢迎的任何其他反馈
BEGIN
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
答案 0 :(得分:0)
您可以在INSERT
之后使用SELECT @@warning_count;
和SELECT @@error_count;
来查看是否成功。我是的,它将返回0行。
last_insert_id()仅限于当前连接,因此无论数据库有多少并发连接,您都将获得正确的值。