Lấy và cập nhật nguyên tử một hàng (LCC.db.fetch_one)
Khai báo
row, err = LCC.db.fetch_one(name, opts, timeout?)
Tham số
- name
Kiểu chuỗi, tên bảng; phải khác rỗng và không dài quá 256 byte - opts
Kiểu bảng, gồm các trường sau:conditions: kiểu bảng, điều kiện lọc bằng nhau, mặc định là{}update: kiểu bảng, tập hợp trường cần cập nhật sau khi lấy thành côngpick: kiểu chuỗi, tùy chọn"min"/"max"/"random", mặc định là"min"; chọn bản ghi dựa trênid
- timeout
Kiểu số, tùy chọn; thời gian chờ yêu cầu (giây), mặc định là60
Giá trị trả về
- row
Kiểu bảng, đối tượng hàng đã nhận; trả vềnilnếu thất bại hoặc không có kết quả khớp - err
Kiểu chuỗi hoặcnil, nội dung mô tả lỗi khi thất bại. Trả về'not found'nếu không có kết quả khớp và'unknown table'nếu bảng không tồn tại
Mô tả
Đọc và cập nhật nguyên tử một bản ghi, phù hợp cho các trường hợp đồng thời như nhận tác vụ.
Các trường trongupdateđược ghi lại ngay sau khi đọc, bảo đảm cùng một hàng không bị phân phối lặp lại.
Khi không truyềnupdate, hàm vẫn chọn nguyên tử một hàng nhưng không ghi lại trường nào.
Ví dụ
local row, err = LCC.db.fetch_one("Bảng tác vụ", {
conditions = { ["Trạng thái"] = "Đang rảnh" },
update = { ["Trạng thái"] = "Đang thực hiện" },
pick = "min"
})
if row then
print("Nhận tác vụ", row.id, row["Tên"])
elseif err == "not found" then
print("Hiện không có tác vụ đang rảnh")
end