使用MemSQL我想创建一个包含多个唯一键和一个主键的表。但我不知道如何在表格中添加多个唯一键。这是我的表:
CREATE TABLE IF NOT NOT EXISTS user_auth
(
id
bigint(20)NOT NULL AUTO_INCREMENT,
user_id
bigint(20)NOT NULL,
code
char(36)NOT NULL,
rest_code
char(36)NOT NULL,
password
varchar(100)NOT NULL,
pswd_updated_on
datetime NOT NULL,
主要关键(id
)
);
我想在user_id,code,rest_code列上添加唯一键。
答案 0 :(得分:2)
您需要在足够的列上添加分片键,以使每个唯一/主键包含分片键。如果您没有指定分片键,则选择主键,并且因为(user_id,code,rest_code)不是分片键的一部分(隐式地在id上),所以它将不起作用。这是因为MemSQL需要能够在本地解析重复项,即在单个分片中。
我会尝试shard(user_id), primary key(user_id, id), unqiue key(user_id, code, rest_code)
之类的东西。是的,将user_id
添加到主键是多余的,我正在对您的应用做一些假设,但我的猜测是数据库实际上不必担心多个用户“声称相同的ID”,所以这会奏效。