2015-12-02 17 views
7

Tôi nhận được hai lần chèn mà tôi muốn có dưới sự kiểm soát giao dịch. Nếu một trong số chúng bị lỗi thì cũng không được thực thi/chèn vào. Đây hoạt động tốt khi làm việc đó ngay trong MySQL như thế nàyQuản lý giao dịch người quản lý sql của kế hoạch chi tiết Camel

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

Bây giờ sử dụng lạc đà Tôi đã cố gắng

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

trong đó sản xuất một lỗi cú pháp sql. Điều thứ hai tôi đã thử là

<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"/> 

hoạt động nhưng nếu một lần chèn khác vẫn còn đang được thực hiện và chèn vào.

Tôi cũng tìm thấy điều này http://camel.apache.org/transactional-client.html nhưng tôi đang sử dụng kế hoạch chi tiết và những ví dụ này dường như chỉ dành cho mùa xuân. Vì vậy, nếu bất cứ ai có một ví dụ tốt làm nó với kế hoạch chi tiết lạc đà này sẽ là tuyệt vời.

Có ai có thể giúp tôi làm điều này trong lạc đà không?

+0

Tính năng này hoạt động như thế nào? Tôi có nghĩa là uri của bạn chỉ là một câu lệnh SQL. Không có thành phần nào được liên kết với nó. Có thể bạn có thể đăng toàn bộ tuyến đường của bạn, ví dụ: Blueprint.xml. – Namphibian

+0

Oh sry quên "sql:" - thêm nó bây giờ – Milla

+0

ich danke Ihnen, dass eine Menge helfen nếu tôi nhớ Deutsch của tôi một cách chính xác. – Namphibian

Trả lời

0

Hãy chắc chắn rằng "Engine" là InnoDB (không MyISAM). MyISAM âm thầm bỏ qua các báo cáo giao dịch (START, COMMIT).

Sử dụng công cụ dòng lệnh mysql và thực hiện SHOW CREATE TABLE .... Ở cuối bảng, nó sẽ chỉ định Engine.

Các vấn đề liên quan