admin

SQLite:防止重复行

sql

CREATE TABLE Permission ( 
    permissionID INTEGER PRIMARY KEY UNIQUE,
    user         INTEGER
    location     INTEGER 
);

我不想拥有用户或位置,UNIQUE因为我可以有多行用户包含相同数据,或者有多行位置包含相同数据。我只想避免用户和位置都具有一定的价值,因为该行重复了许多次。

例如:这还可以

permissionID user location
--------------------------
      1        1     2
      2        2     2
      3        2     1

但这不行:

permissionID user location
--------------------------
      1        1     2
      2        1     2

因为已经存在其中user = 1和location = 2的行。

如何避免重复?


阅读 148

收藏
2021-05-10

共1个答案

admin

声明对(用户,位置)的唯一约束。

CREATE TABLE Permission (
    permissionID integer primary key,
    user integer not null,
    location integer not null,
    unique (user, location)
);



sqlite>插入Permission(用户,位置)值(1、2);
sqlite>插入Permission(用户,位置)值(1、2);
错误:唯一约束失败:Permission.user,Permission.location
2021-05-10