0
我有幾個問題我不確定的和將是一個很大的幫助,如果有人可以幫助我MySQL的交易成功表鎖,最後插入
1)我想回到我的代碼,用戶成功插入進入數據庫它也沒有失敗。我是否會按照如果Last_Insert_id不爲空來執行此操作?返回一條消息說插入。
2)將last_isert_id特定於插入的用戶,即一次插入一個插入。我需要做一個鎖來實現這一點。即如果我有一個配置文件表的例子,我得到了last_isert_id,我可以保證,如果很多ppl都立即註冊,每個用戶的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
我想確保所有表已成功更新我是否需要SELECT @@ warning_count後每個表 – 2013-02-27 22:55:17
您大多會感興趣的錯誤。插入成功時引發警告,但有些數據被截斷。無論如何,是的,每次查詢後都會進行檢查。這就是你在使用編程語言驅動時的工作方式(除非你通常可以自動執行該過程),所以在處理原始SQL時也是如此。 – Mchl 2013-02-27 23:08:09