Tôi đang cố gắng để đảm bảo khi tôi chạy truy vấn sau đây chỉ INSERT INTO
đầu tiên sẽ làm việc độc đáo .. Tôi biết tôi phải làm slot
UNIQUE
SQLite chính với sự kết hợp của hai cột
Khe có thể là từ 0-5 INTEGER nhưng nó không có nghĩa là chỉ có 6 hàng dữ liệu bảng có thể được chấp nhận vào bảng đó.
Đối với mỗi người chơiHash phù hợp với nó chỉ nên cho phép 6 hàng dữ liệu bảng là slot
là UNIQUE
(không được trùng lặp cùng một cột vị trí, cho mỗi cột của người chơi).
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 1);
//Below Query Should Fail
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 1);
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 2);
//Below Query Should Fail
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 1, 2);
//Below Query Should Pass
INSERT INTO Buying(itemId, amount, price, bought, slot, playerHash) VALUES (1, 1, 1, 1, 0, 2);
Vấn đề tất nhiên là tất cả họ đều vượt qua và gây ra tình trạng trùng lặp
Hiện nay tôi sử dụng DDL bảng này
CREATE TABLE Buying (
id INTEGER PRIMARY KEY AUTOINCREMENT,
itemId INTEGER NOT NULL,
amount INTEGER NOT NULL,
price INTEGER NOT NULL,
bought INTEGER NOT NULL,
collected INTEGER NOT NULL
DEFAULT (0),
overpaid INTEGER NOT NULL
DEFAULT (0),
slot INTEGER NOT NULL,
aborted BOOLEAN NOT NULL
DEFAULT (0),
playerHash INTEGER NOT NULL
);
Các công trình lớn chèn bây giờ đầu tiên vượt qua chèn tiếp theo cho tôi. lỗi 'Lỗi khi thực hiện truy vấn: khe cột, playerHash không phải là duy nhất' – SSpoke
Tôi không biết cách liên kết chúng theo cách độc đáo bằng cách sử dụng SQLiteStudio, hóa ra, nó không liên quan gì đến việc chỉnh sửa cột thành duy nhất v.v. bạn chỉ cần tạo một Ràng buộc Bảng với Kiểu duy nhất sau đó chọn hộp kiểm của mỗi cột. – SSpoke
@SSpoke nhớ sử dụng [chèn] thay vì [chèn] –