2012-10-09 28 views
8

Tôi đang cố gắng tạo một giao dịch trong MySql sẽ quay trở lại khi ngoại lệ xảy ra trong giao dịch. Tương tự bằng cách sử dụng sau đây trong một thủ tục được lưu trữ.MySQL Script với rollback trên lỗi

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; 

Điều này có thể được thực hiện mà không cần viết quy trình được lưu trữ không? Ví dụ: đoạn mã sau sẽ cuộn lại chèn đầu tiên vì chèn thứ hai sẽ không thành công.

START TRANSACTION; 
INSERT INTO mytable VALUE 'foo1',2,'foo3','foo4' 
INSERT INTO mytable VALUE 'foo1','foo2','foo3','foo4' 
COMMIT 
+0

Bạn đang sử dụng PHP? Vì điều này có thể đạt được ở phía lập trình. –

+0

Không có PHP chỉ SQL. Tôi có thể thực hiện trong Java nhưng yêu cầu chỉ yêu cầu tập lệnh SQL. – Damien

+0

Tại sao bạn không sử dụng quy trình được lưu trữ? –

Trả lời

5

Nếu tôi hiểu chính xác bạn muốn chạy tập lệnh SQL có chứa, ví dụ chèn, trong một giao dịch sẽ quay trở lại nếu bất kỳ chèn nào không thành công. Đúng?

Tôi không phải là 100% về điều này, nhưng tôi khá chắc chắn bạn sẽ cần phải làm điều này như một thủ tục lưu trữ hoặc lập trình trong, nói, Java.

+1

Có điều này là những gì tôi muốn làm và là kết luận tôi cam từ tìm kiếm trên internet, nhưng tôi thấy khó mà tin rằng tùy chọn này không có sẵn cho bạn từ một tập lệnh SQL. – Damien

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