Tôi có một bảng mnesia với ba lĩnh vực, i, a, b, tạo bằng kỷ lụcErlang: Mnesia: Cập nhật một giá trị trường duy nhất trong một hàng
-record(rec, {i, a,b}).
Bây giờ tôi chèn một hàng vào bảng như :
mnesia:transaction(fun() -> mnesia:write("T", #rec{i=1, a=2, b=3}, write) end).
Bây giờ tôi phải làm gì nếu tôi muốn cập nhật hàng này và chỉ thay đổi giá trị từ 10 thành, trong khi để i và b có cùng giá trị? Có bất kỳ tương đương SQL nào như "UPDATE T SET a=10 WHERE i=1
" không?
Nếu tôi làm điều gì đó như thế này:
mnesia:transaction(fun() -> mnesia:write("T", #rec{i=1, a=10}, write) end)
Hàng được lưu giữ như:
{rec,1,10,undefined}
Tôi cần phải có một mắt về hiệu quả, vì vậy bạn sẽ khuyên bạn nên sử dụng QLC hoặc phương pháp bạn đã chỉ định ở trên? – ErJab
Tôi đã thử điều này, và vì một lý do nào đó nó không hoạt động. Giá trị không được cập nhật. – ErJab
@ErJab, hãy kiểm tra dirty_update_counter, nó có thể phục vụ nhu cầu của bạn. – Zed