Trong SQLite, được đưa ra giản đồ cơ sở dữ liệu nàyTăng truy cập hoặc chèn hàng trong một tuyên bố, trong SQLite
CREATE TABLE observations (
src TEXT,
dest TEXT,
verb TEXT,
occurrences INTEGER
);
CREATE UNIQUE INDEX observations_index
ON observations (src, dest, verb);
bất cứ khi nào một quan sát tuple (:src, :dest, :verb)
mới đến, tôi muốn hoặc tăng các "sự cố" cột cho hiện hàng cho tuple đó hoặc thêm hàng mới với lần xuất hiện = 1 nếu chưa có. Trong mã giả bê tông:
if (SELECT COUNT(*) FROM observations
WHERE src == :src AND dest == :dest AND verb == :verb) == 1:
UPDATE observations SET occurrences = occurrences + 1
WHERE src == :src AND dest == :dest AND verb == :verb
else:
INSERT INTO observations VALUES (:src, :dest, :verb, 1)
Tôi tự hỏi liệu có thể thực hiện toàn bộ hoạt động này trong một câu lệnh SQLite hay không. Điều đó sẽ đơn giản hóa logic ứng dụng (được yêu cầu để hoạt động cơ sở dữ liệu không đồng bộ đầy đủ) và cũng tránh tìm kiếm chỉ mục kép với chính xác cùng một khóa. INSERT HOẶC THAY THẾ không xuất hiện là những gì tôi muốn, và than ôi không có CẬP NHẬT HOẶC INSERT.
Sẽ không có ý nghĩa hơn khi khai báo 'lần xuất hiện' là INTEGER? – dan04
D'oh! Xin chào. Đã chỉnh sửa. – zwol