2013-05-23 39 views
5

Tôi đang làm việc trên một ứng dụng cơ sở dữ liệu với MySQL và PHP. Tại thời điểm này tôi đang cố gắng để có được những thay đổi gây ra bởi UPDATE cuối cùng. Cách thứ nhất của tôi để giải quyết vấn đề làMySQL: Cách nhận các thay đổi của UPDATE cuối cùng

  • nhận tình trạng 'cũ' với SELECT
  • Làm thay đổi với CẬP NHẬT
  • nhận được 'mới' nhà nước với SELECT
  • so sánh các mảng với php

đây là ba mysql-kết nối ...

có cách nào để rút ngắn này?

+2

Lưu trữ trạng thái ban đầu khi bạn tải biểu mẫu cục bộ, sau đó so sánh nội dung bạn đang gửi trong bản cập nhật cũng cục bộ? Không có lý do để invlove MySql trong việc tìm ra những thay đổi. – JCleveland

+0

Vì bạn về cơ bản có trạng thái "mới" dự định trong bộ nhớ, bạn có thể tiết kiệm ít nhất là lệnh SELECT thứ hai. Miễn là UPDATE của bạn không báo cáo bất kỳ lỗi nào, bạn hoàn toàn có thể dựa vào thực tế là trạng thái cơ sở dữ liệu sẽ là những gì bạn nghĩ. Để nói nhiều hơn, nó sẽ là tốt đẹp để biết chính xác những gì bạn đang có kế hoạch để làm với đồng bằng đó. – joerx

+0

Bạn có cần chỉ để xác định có bao nhiêu hàng bị ảnh hưởng hoặc cần phải so sánh dữ liệu chi tiết? –

Trả lời

1

hãy để tôi nói cho bạn biết làm thế nào tôi làm điều đó,

khi tôi cập nhật i liên tiếp, trước hết tôi nhận được mà hàng tôi đang cập nhật và tôi gọi cho họ active records. sau đó tôi so sánh từng cột của active records với các trường biểu mẫu. đó là cách tôi biết cột nào đã thay đổi.

và nếu bạn muốn lưu trữ các cột đã thay đổi, hãy tạo bảng history giống như vậy;

id  (for primary key) 
tablename (which table i'm updating) 
recordid (which row i'm updating) 
column (which columns has been changed) 
oldvalue (active record value) 
newvalue (form value-updated value) 
date  (obvious) 
user  (who did this change) 

sau đó, bạn có thể sử dụng trí tưởng tượng của mình cho cấu trúc bạn muốn sử dụng.

1

Bạn có thể làm một before update trigger rằng sẽ đẩy toàn bộ một bản sao của bản ghi vào một bảng lịch sử mà còn chứa dữ liệu nhà nước bổ sung mà bạn muốn để lưu trữ (ngày cập nhật, sử dụng, vv)

Bằng cách này bạn sẽ có một lịch sử sửa đổi hoàn chỉnh về những gì đã xảy ra với những hồ sơ nào và nó sẽ xảy ra một cách minh bạch. chỉ cần nhớ là bạn nên thả bất kỳ ràng buộc duy nhất nào từ bảng lịch sử.

Hy vọng điều này sẽ hữu ích.

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