如何防止在MemSQL中插入重复的行?

时间:2019-07-17 19:37:02

标签: unique auto-increment memsql

我有AUTO_INCREMENT PRIMARY KEY和另一列我无法设置的列UNIQUE,因为与标准RDBMS(例如MySQL或PostgreSQL)不同,MemSQL仅允许其中一个,而不能同时允许。

是否有解决方法来防止重复的行而不牺牲auto_increment列?

我可以将unique用作主键,并在其他产品/服务(例如Redis / atomic变量)中使用atomic计数器,但是当我需要更新unique列时,我必须先删除它,然后重新插入,这是不好的/不受欢迎的方式我..

1 个答案:

答案 0 :(得分:1)

MemSQL确实支持多个唯一键以及一个主键。但是,MemSQL要求每个唯一键或主键中的列必须是分片键中列的超集-即,在每个唯一键下被视为重复的所有值都具有相同的分片键,以便将它们映射到相同的分区。这进一步暗示,所有唯一/主键必须共享至少一个共同的列。

对于您而言,在自动增量列和另一列上都不能同时具有唯一/主键。但是您可以在另一列上具有唯一/主键,而在auto_increment列上没有唯一键-只需将其定义为非唯一键即可。自动生成的值仍然是唯一的。请注意,如果您手动插入与其他auto_increment值重复的值,则该表将无法执行唯一性。