2010-09-14 15 views
8

Có cách nào tôi có thể kiểm tra xem hàng có khả năng bị xóa không? Rằng nó ví dụ hiện không được kết nối thông qua các khóa nước ngoài bị hạn chế cho bất cứ điều gì khác.Kiểm tra xem một hàng có thể bị xóa trong MySQL

Lý do: Tôi đang tạo trang quản trị với tất cả người dùng trong hệ thống được liệt kê. Chúng luôn có thể bị vô hiệu hóa, nhưng chúng cũng có thể bị xóa. Tuy nhiên, chúng chỉ có thể bị xóa nếu chúng không được kết nối với bất kỳ điều gì quan trọng. Và tôi không muốn kiểm tra bằng tay nếu nó có thể được thực hiện dễ dàng trong cơ sở dữ liệu.

Lưu ý: Tôi không thực sự muốn xóa bất kỳ người dùng nào. Tôi chỉ muốn hiển thị với quản trị viên rằng người dùng có thể bị xóa.

+0

Cố gắng xóa nó. Nếu db phàn nàn, điều đó là không thể. ;) – BoltBait

+0

Bạn luôn có thể xóa quản trị viên bằng cách xóa nội dung được kết nối trước rồi xóa quản trị viên. – Bot

+1

Um, yeah, nhưng sau đó nó sẽ bị xóa, mà có thể hoặc có thể không phải là những gì admin muốn: p Tôi chỉ muốn hiển thị nếu nó là một possiblity. – Svish

Trả lời

3

Bạn có thể thử xóa nó như một phần của giao dịch và sau đó quay lại giao dịch nếu thành công. NHƯNG, tôi đoán câu hỏi tiếp theo ngay lập tức là, tại sao bạn không biết ở nơi đầu tiên nếu bạn có thể xóa hàng hay không?

+1

Bởi vì nó có thể có các hạn chế khác nhau gắn liền với nó thông qua các khóa nước ngoài và tôi không muốn phải kiểm tra tất cả những điều đó theo cách thủ công vì chúng có thể thay đổi nếu tôi thêm hoặc xóa bảng sau đó. – Svish

+0

Bạn có lỗi trong logic nghiệp vụ rồi. Đó là loại xác minh nên được thực hiện trong lớp kinh doanh của bạn, mà sẽ thực hiện các truy vấn cần thiết để đảm bảo người dùng không kết nối với bất cứ điều gì. – GrandmasterB

+2

Tính toàn vẹn dữ liệu của suy nghĩ và kiểm tra như vậy là những hạn chế quan trọng của nước ngoài là gì? – Svish

1

Bạn có thể sử dụng chế độ xem để tổng hợp số lượng phụ thuộc mà không phải lo lắng về việc lưu trữ dữ liệu & giữ nó hiện tại. Khi số lượng phụ thuộc bằng không, hãy làm cho tùy chọn xóa có sẵn trong giao diện người dùng ...

0

Bạn có thể nhận tất cả các hàng mồ côi bằng cách tham gia trái vào bảng mà chúng được kết nối với, ví dụ: điều này sẽ cung cấp cho bạn tất cả các id người dùng không có bất kỳ công việc nào.

SELECT u.id FROM users u LEFT JOIN jobs j on u.id=j.user_id WHERE j.user_id is null; 
Các vấn đề liên quan