Tôi có bảng "A" trong MySQL. Nó có một số tài liệu tham khảo với cascade xóa một số bảng khác ("B", "C", "D" ...). Tôi cần phải sử dụng một kích hoạt khi một cái gì đó xóa từ "A". Trình kích hoạt này hoạt động khi tôi xóa bản ghi từ "A" trực tiếp. Nhưng nó không hoạt động với việc xóa tầng. Có bất kỳ phiên bản MySQL nào tồn tại ở nơi trình kích hoạt của tôi sẽ hoạt động với việc xóa tầng không? Hoặc, có thể, có một cách khác để gọiCuộc gọi kích hoạt trong tầng xóa
Trả lời
Từ http://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html
Cascaded hành động chính nước ngoài không kích hoạt trigger
Nói cách khác, bạn không thể sử dụng kích hoạt với xóa cascaded.
Tôi ghét mysql hơn mỗi ngày –
Vâng, họ không làm gì để sửa chữa nó trong 5 (?) Năm qua. – boreq
Tôi chỉ tìm thấy vấn đề này, và nó cực kỳ ngu ngốc :-( –
Để tóm tắt câu trả lời từ @Niel de Wet và @Browny Lin:
- xóa Đáng buồn thay cascaded không kích hoạt trigger trong MySQL.
- Một giải pháp là không sử dụng xóa tầng nhưng thay vào đó thực hiện xóa tự động qua trình kích hoạt khác.
sử dụng trình kích hoạt khác để xóa không phải là phương pháp thích hợp vì nếu tôi có trình kích hoạt trên tableA và xóa một hàng trong bảngB, và nếu tôi có bảng kích hoạt aB để cập nhật tableA, thì một va chạm – Shafizadeh
CREATE TABLE doc (
docID INTEGER NOT NULL AUTO_INCREMENT,
langCode CHAR(2) NOT NULL,
title VARCHAR(32),
PRIMARY KEY (docID, langCode)
) Type=InnoDB;
CREATE TABLE author (
authorID INTEGER NOT NULL AUTO_INCREMENT,
docID CHAR(2) NOT NULL,
name VARCHAR(32),
PRIMARY KEY (authorID),
FOREIGN KEY (docID) REFERENCES doc(docID) ON DELETE CASCADE ON UPDATE CASCADE
) Type=InnoDB;
Đây là bản sao trực tiếp của nhận xét từ http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html – hichris123
Điều này dường như không cố gắng trả lời th e câu hỏi ở tất cả. – Pang
Hãy để tôi chia sẻ như thế nào Tôi đã "sửa chữa" vấn đề này từ ngày đầu tiên tôi phát hiện ra nó tồn tại. Tôi sao chép trình kích hoạt từ bảng xếp tầng vào bảng đầu tiên bị xóa trực tiếp. Nó chỉ hoạt động.
Rất nhiều lần đó là vấn đề sao chép/dán và đôi khi nó yêu cầu viết lại mã.
Phần tốt nhất là, khi Oracle cuối cùng sửa lỗi này Lỗi bạn chỉ xóa mã kích hoạt khỏi bảng đã nói. Thì đấy!
- 1. AngularJS $ http không kích hoạt nhận cuộc gọi
- 2. Không thể tạo trình kích hoạt Xóa vì bảng có khóa NGOẠI HỐI với tầng DELETE
- 3. Kích thước ngăn xếp cuộc gọi tối đa đã vượt quá trong một cuộc gọi setTimeout
- 4. Xóa tầng trong Khung thực thể
- 5. Mức ngăn xếp quá sâu trong các cuộc gọi lại đang kích hoạt
- 6. xóa kích hoạt trong thạch anh
- 7. Kích hoạt shouldStartLoadWithRequest với nhiều window.location.href gọi
- 8. calloutAccessoryControlTapped không gọi/kích hoạt
- 9. Android - Quay lại cuộc gọi Hoạt động
- 10. Làm thế nào để xóa kích hoạt trong SQL Server?
- 11. Xóa hàng với Mysql Kích hoạt
- 12. Xác thực jQuery: một cuộc gọi lại được kích hoạt bởi một quy tắc nhất định?
- 13. Mục đích sẽ được kích hoạt khi cuộc gọi kết thúc?
- 14. enable_if + disable_if kết hợp kích hoạt một cuộc gọi mơ hồ
- 15. Xóa tầng trên khóa ngoài trong Mã số Đầu tiên
- 16. hoàn tác/làm lại với xóa tầng
- 17. Android: Tăng kích thước ngăn xếp cuộc gọi
- 18. Khuôn khổ thực thể trên xóa tầng
- 19. Xóa cuộc gọi hàm khởi tạo ủy nhiệm dư thừa?
- 20. Tạo, CẬP NHẬT và XÓA cuộc gọi bằng django-tastypie
- 21. JPA Hibernate nhiều tầng nhiều tầng
- 22. Làm thế nào để kích hoạt các "lỗi" callback trong JQuery AJAX cuộc gọi sử dụng trong PHP
- 23. Cuộc gọi đến toán tử 'xóa' có đồng bộ không?
- 24. Phát hiện cuộc gọi đến trong Lync
- 25. thực Conditional sau một kích hoạt xóa trong SQLite
- 26. Cuộc gọi lắp ráp trong GCC?
- 27. Mongoose.js instance.save() gọi lại không kích hoạt
- 28. try-lock cuộc gọi mutex và các cuộc gọi CAS
- 29. Công việc xếp tầng "này" hoạt động như thế nào?
- 30. Cách kích hoạt cuộc gọi điện thoại khi nhấp vào liên kết trong trang web trên điện thoại di động
Đây là một đối số để thực hiện logic trong mã ứng dụng, không phải là thiết lập phức tạp của Trình kích hoạt và xếp tầng. –