MySQL KHÔNG cung cấp tùy chọn đó cho truy vấn đặc biệt. Nó được gọi là - cập nhật an toàn (hoặc --i-am-a-giả). Như những người khác đã chỉ ra, chúng tôi đã tất cả đã phạm sai lầm đó một lần. Những người trong chúng ta, những người chạy các truy vấn đặc biệt mọi lúc, đôi khi vào lúc 1 giờ sáng, đã phạm sai lầm nhiều lần.
Mặc dù tôi thường ghét các hệ thống "bằng chứng không xác thực" và các hộp thoại "bạn chắc chắn", Tôi thích tùy chọn này. Bạn nên luôn cẩn thận, nhưng thậm chí là cẩn thận bạn sẽ làm cho có lẽ một lỗi mỗi nghìn giờ. Nếu bạn dành 50 giờ một năm tuần đăng nhập với tư cách là người chủ trên hệ thống sản xuất, một lỗi mỗi nghìn giờ là 2 1/2 số lần trục vít lớn mỗi năm. Vì lý do đó và một lý do khác, chúng tôi tìm thấy - cập nhật an toàn rất hữu ích.
Có hai lý do hữu ích hơn hầu hết các xác nhận MS thư. Đầu tiên nó bắt được một thứ có nhiều khả năng là một lỗi, không giống như "bạn có chắc chắn muốn xóa tệp đó không?". Hầu hết các tập tin xóa thực sự là mong muốn, do đó, xác nhận là một khó chịu. Hầu hết "xóa từ người dùng", nếu thiếu mệnh đề where, thực sự là lỗi. Thứ hai, nó chỉ ra chính xác những gì các vấn đề có khả năng là - thiếu khoản where. Đó là như thể xác nhận xóa tệp là đủ thông minh để nói "đó là thương hiệu bản sao cập nhật mới, không phải bản sao cũ mà bạn cho rằng mình đang xóa. Bạn có thực sự muốn xóa bản sao mới hay bạn định xóa cái cũ thay thế? "
Dù sao, nói chung tôi ghét "bằng chứng ngốc nghếch", nhưng tôi thích - cập nhật an toàn và nếu đó là tùy chọn những người không muốn nó không cần sử dụng nó. Mối quan tâm của tôi là nếu bạn liên tục làm việc trên một hệ thống có tính năng, ai đó có thể bị cẩu thả và gặp rắc rối khi họ chuyển sang hệ thống mà không có nó, chẳng hạn như chuyển từ MySQL sang MSSQL.
Làm xước cảnh báo trước - không ai trong tâm trí của họ sẽ chuyển sang MS sau khi trở nên quen thuộc với nguồn mở. :)
Bạn giả định rằng người chết não sẽ không chỉ thêm một WHERE 1 = 1 bởi rote và sẽ bắt đầu suy nghĩ thay thế. Tôi không nghĩ điều đó sẽ xảy ra: họ đã chết não. Trong khi đó, mọi công ty sẽ yêu cầu tùy chọn "Josh" được đặt vào mọi lúc để "bảo mật" và thế giới tư duy sẽ săn lùng bạn và giết bạn. IMHO, tất nhiên, YMMV. –
Vì vậy, bạn có nghĩa là để cho tôi biết rằng nó là phổ biến để cố ý phát hành bản cập nhật và xóa mà không có một mệnh đề where và "thế giới suy nghĩ" sẽ rất phiền bởi tùy chọn này mà họ muốn tôi chết? – Josh
Tôi không mua lập luận rằng mọi người sẽ học cách gõ 'WHERE 1 = 1' nơi họ không thực sự muốn nó. Để phát triển thói quen đó, họ sẽ phải có một tình huống thường xuyên, nơi họ thực sự muốn cập nhật để đạt được mọi hàng, và điều đó dường như ít phổ biến hơn trong trường hợp bạn * không * muốn điều đó. Điểm yêu cầu một cái gì đó như 'WHERE 1 = 1' không phải là để bảo vệ chống lại những người * nghĩ * họ muốn đánh mỗi hàng, nó là để bảo vệ chống lại những người vô tình nhấn F5 quá sớm hoặc chọn tất cả mọi thứ nhưng mệnh đề WHERE . –