2011-08-28 32 views
6

Tôi đã tự hỏi nếu có điều tương tự như một chức năng gọi lại bằng cách sử dụng mysql sau một INSERT hoặc UPDATE mà có thể trả lại cho tôi hàng # và có thể giá trị của các hàng như vậy.Gọi lại MySQL - có một thứ như vậy không?

+3

như thế nào và nơi nào bạn cần giá trị này là trả lại? –

+0

Bạn đang cố gắng [mô phỏng mệnh đề 'OUTPUT'] (http://stackoverflow.com/q/5817414/73226)? –

+0

cũng thấy điều này: http://stackoverflow.com/questions/933565/get-auto-increment-value-with-mysql-query –

Trả lời

4

Tôi không biết bất kỳ cuộc gọi nào như bạn nói nhưng chắc chắn từ ứng dụng gọi điện của bạn, bạn có thể truy xuất ID được chèn cuối cùng trong trường hợp bạn không chỉ định nó và db đã tạo ra giá trị tăng tự động. Các giá trị khác bạn đã biết vì bạn đã chèn chúng.

nếu bạn cần biết những giá trị đó trong máy chủ cơ sở dữ liệu, bạn có thể kích hoạt trình kích hoạt SQL được thực thi tại mỗi lần chèn để bạn có thể xử lý nhiều hơn trên bản ghi mới được chèn vào.

+0

Tôi có thể lấy ID cuối cùng đó bằng cách nào? bởi vì một truy vấn chèn không trả lại (theo như tôi biết) một giá trị ngoài thành công hay thất bại. –

+0

http://stackoverflow.com/questions/933565/get-auto-increment-value-with-mysql-query –

+1

@Itai Sagi gọi [last_indert_id())] (http://dev.mysql.com/doc/ refman/5.5/en/information-functions.html # function_last-insert-id) –

7

Bạn có thể tạo triggers được gọi là chèn và cập nhật. Chúng không trả về giá trị, nhưng chúng có thể thiết lập các biến mà bạn có thể đọc bên ngoài chúng.

+0

Cảm ơn bạn! Tôi nhận được ở đây bởi Google tìm kiếm "MySQL callback" để tìm cụm từ "trigger", như tôi chắc chắn nhiều người khác đã làm. – maurice

2

Tính năng này không khả dụng trong MySQL khi nó đứng. Tôi nghĩ có hai phương pháp để đạt được điều này:

  1. Bạn sẽ phải mô phỏng nó bằng cách bỏ phiếu - một phương pháp khá xấu, dễ lập trình nhưng khó trên máy chủ.

  2. Xem Does MySQL permit callbacks in C such that when a change happens, I can be notified? - viết hàm do người dùng xác định có thể thông báo cho người nghe đã đăng ký sử dụng một số phương pháp độc quyền của bạn. Tougher trên lập trình viên, dễ dàng trên máy chủ. Trong trường hợp này, hãy đảm bảo UDF của bạn mạnh mẽ, không đóng băng trong khi gửi thông báo cho người nghe có thể đã chết, v.v.
Đây sẽ là một UDF chung tiện dụng cho MySQL và mang lại một thứ gì đó mà nó luôn thiếu trong so sánh để Firebird/Interbase, mà họ gọi sự kiện, không được nhầm lẫn với MySQL sự kiện hẹn giờ. Tính năng sự kiện theo thời gian của MySQL, mặt khác là thứ mà Firebird & Interbase thiếu thời gian qua tôi đã xem chúng.

Xem này cho một mô tả sự kiện Firebird trong trường hợp bạn (hoặc một số người đọc sau) quyết định làm điều đó thông qua UDF - đó là một đặc tả thiết kế tốt để nhằm mục đích: http://www.janus-software.com/fbmanual/manual.php?book=php&topic=49

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