Основываясь на том, чтобы эмулировать безопасную последовательность транзакций в MySQL https://stackoverflow.com/a/2292030/48659 и выполнения SQL-операторов How do you manually execute SQL commands in Ruby On Rails using NuoDBRails MySQL многоядерного оператора SQL терпит неудачу
Я пытаюсь сделать следующее:
ActiveRecord::Base.connection.execute("UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo'; SELECT @next;")
Но теперь я обнаружил, что драйвер Mysql2 не справляется с несколькими утверждениями!
Есть ли хорошее решение, которое я могу использовать? Если бы я разделил два заявления:
ActiveRecord::Base.connection.execute("UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo';")
ActiveRecord::Base.connection.execute("SELECT @next;")
Он работает в консоли, но я могу быть уверен, что это действительно безопасно, и ничто не может еще может проникнуть в систему и выполнить в середине этих двух утверждений?
Есть ли лучшие решения? (Я не против использования PostgreSQL, если это сработает, но еще не пробовал.)