我有一个名为locations
的表,除其他字段外,还有以下字段:
IMEI: VARCHAR(15) foreign key references devices.IMEI
latitude: DECIMAL(10,6)
longitude: DECIMAL(10,6)
datetime: DATETIME
有时,我的服务器存储重复项,即上面的所有字段都相同,这意味着a given device (IMEI)
位于latitude,longitude
datetime
。我想阻止所有这四个字段等于表中任何其他行的插入。
我不确定是否应该使用索引或主键。如果有帮助,这些字段将一直用于选择/过滤器。
有什么想法吗?
答案 0 :(得分:1)
通过更改现有表格来添加复合主键
ALTER TABLE locations ADD PRIMARY KEY(IMEI, latitude, longitude, datetime);
或者您可以在创建表格时定义键
DECLARE @locations TABLE (
...,
PRIMARY KEY(IMEI, latitude, longitude, datetime)
);