2015-12-02 2 views
7

У меня есть две вставки, которые я хочу иметь под транзакционным контролем. Если один из них не работает, другой не должен быть выполнен/вставлен. Это прекрасно работает, когда делать это прямо в MySQL, как этотМенеджер по продажам Camel sql

START TRANSACTION; 
INSERT INTO table (field) VALUES (value); 
INSERT INTO table2 (field) VALUES (value); 
COMMIT; 

Теперь с помощью верблюда я уже пробовал

<to uri="sql:START TRANSACTION; INSERT INTO table (field) VALUES (value);INSERT INTO table2 (field) VALUES (value);COMMIT;"/> 

который производит SQL синтаксической ошибки. Вторая вещь, которую я попробовал это

<to uri="sql:START TRANSACTION"/> 
<to uri="sql:INSERT INTO table (field) VALUES (value)"/> 
<to uri="sql:INSERT INTO table2 (field) VALUES (value)"/> 
<to uri="sql:COMMIT"/> 

который работает, но если одна вставка терпит неудачу другой все еще выполняется и вставили.

Я также нашел это http://camel.apache.org/transactional-client.html, но я использую план, и эти примеры, похоже, только для весны. Поэтому, если у кого-нибудь есть хороший пример, делающий это с планом верблюда, это было бы здорово.

Может ли кто-нибудь помочь мне сделать это на верблюде?

+0

Как это работает? Я имею в виду, что ваш uri - это просто оператор SQL. Компонент не связан с ним. Не могли бы вы разместить весь маршрут, т. Е. Blueprint.xml. – Namphibian

+0

Ой, сэр, забыл «sql:» - добавил теперь – Milla

+0

ich danke Ihnen, dass eine Menge helfen, если я правильно помню свой Deutsch. – Namphibian

ответ

0

Убедитесь, что «Двигатель» является InnoDB (не MyISAM). MyISAM молча игнорирует транзакционные заявления (START, COMMIT).

Используйте инструмент командной строки mysql и выполните команду SHOW CREATE TABLE .... В конце таблицы будет указан движок.

Смежные вопросы