2015-11-25 3 views
1

Si je fais une requête commeIs mysql insert from subquery atomic?

insert into sometable b + 10 from select b from (select b from sometable order by id desc limit 1) 

est cette opération atomique? C'est-à-dire, serait-il possible pour un insert dans sometable de changer la valeur de b AFTER a été interrogé, mais avant que l'insertion se termine, entraînant l'insert d'obtenir la mauvaise valeur?

+0

Parfois - voir https://dev.mysql.com/doc/refman/5.6/en/set-transaction.html – symcbean

Répondre

-1

Je suppose que ce n'est pas le cas. Vous pouvez le verrouiller pour vous assurer qu'il ne change pas:

INSERT INTO sometable (b) 
SELECT b+10 
FROM sometable 
ORDER BY id DESC 
LIMIT 1 
LOCK IN SHARE MODE 
+0

« Je pense » n'est pas une réponse. Tout le monde peut deviner. – Benubird