摘要在mysql中我想为现有列添加唯一性,而没有删除表,但是由于现有的自动增量/主键/分区键,它会吐出错误。
描述我有下面的表格。并且已经有一些行。
CREATE TABLE my_table (
`id` INT NOT NULL AUTO_INCREMENT,
`event_tx_id` varchar(64) NOT NULL,
`amount` int(10),
PRIMARY KEY(id)
)
ENGINE=InnoDB
PARTITION BY KEY(id)
并且我改变了主意,我想对列event_tx_id添加约束也很独特。
我尝试过
ALTER TABLE my_table MONDIFY COLUMN event_tx_id varchar(64) UNIQUE;
吐出错误
Error Code: 1503. A UNIQUE INDEX must include all columns in the table's partitioning function 0.078 sec
ALTER TABLE my_table PARTITION BY KEY(id, event_tx_id);
然后吐口水
ALTER TABLE my_table PARTITION BY KEY(id, event_tx_id); Error Code: 1503. A PRIMARY KEY must include all columns in the table's partitioning function
ALTER TABLE my_table DROP PRIMARY KEY Error Code: 1075. Incorrect table definition; there can be only one auto column and it must be defined as a key
它抱怨您不能更改(删除)具有自动增加功能的主键。
有什么方法可以处理这个..?thanx。
唯一性约束不适用于分区表,除非分区键是约束的一部分。
分区很少提供任何性能优势或任何其他优势。您希望实现什么?