Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chỉnh sửa cơ sở dữ liệu với sự chấp thuận - mysql

Chúng tôi có một cái gì đó tương tự trên một trong các trang web của chúng tôi, chúng tôi đã thêm một loạt các bảng:

users sites ... vv

Sau đó, chúng tôi có một loạt các bảng bóng:

users-shadow sites-shadow ... vv

Các bảng bóng có cấu trúc giống hệt các bảng thực ngoại trừ một dòng được thêm vào cho người dùng đã thực hiện thay đổi. Vì vậy, trước tiên, chúng tôi sử dụng truy vấn này khi một thay đổi được gửi bởi người dùng cần được chấp thuận các hành động đối với cơ sở dữ liệu của họ:

REPLACE INTO users-shadow (user_mod,id,username,password,salt...) VALUES (16,50,'bob','stuff','salt'...);

Rõ ràng, hãy đảm bảo điều này không mở để tiêm, hãy sử dụng báo cáo đã chuẩn bị sẵn vv

Khi được chấp thuận, một hàng trong shadow bảng chỉ bị xóa khỏi shadow bảng, user_mod giá trị bị giảm và các thay đổi (giá trị không phải null) được chèn vào bảng thực (hoặc được cập nhật nếu một id được chỉ định, sử dụng THAY THẾ cú pháp). Chúng tôi thực hiện logic này trong perl nên thật đáng buồn là không có bất kỳ SQL nào trong tay.

Hãy nhớ rằng SQL REPLACE thực hiện một DELETE và một INSERT chứ không phải là UPDATE . Bạn sẽ cần phải sửa đổi bất kỳ trình kích hoạt nào để cho phép hành vi này.

Lưu ý:Lý do chúng tôi không sử dụng cờ 'phê duyệt' là chúng tôi cần khả năng sửa đổi các bản ghi hiện có, tất nhiên chúng tôi không thể có nhiều bản ghi có cùng một khóa chính.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MYSQL không thể kết nối (HY000 / 2002)

  2. Ngăn chặn cảnh báo PDO

  3. Mã hóa AWS RDS với KMS có ảnh hưởng đến hiệu suất không?

  4. Hỗ trợ các câu lệnh chuẩn bị phía máy chủ với PDO?

  5. Tự động khởi động lại Mysql khi ubuntu trên phiên bản vi mô EC2 giết nó khi hết bộ nhớ