我有一个名为provider的表。我有三个栏,分别是人物,地点,事物。可以有重复的人、重复的地点和重复的事物,但永远不可能有重复的人、地点和事物的组合。
我如何ALTER TABLE添加一个复合主键为这个表在MySQL与这三列?
我有一个名为provider的表。我有三个栏,分别是人物,地点,事物。可以有重复的人、重复的地点和重复的事物,但永远不可能有重复的人、地点和事物的组合。
我如何ALTER TABLE添加一个复合主键为这个表在MySQL与这三列?
当前回答
删除主键,添加主键(col_name1, col_name2)
其他回答
使用COMPOSITE UNIQUE KEY肯定更好,就像@GranadaCoder提供的那样,虽然有一个有点棘手的例子:
添加索引idx_name(some_id, another_id, one_more_id)
alter table table_name add primary key (col_name1, col_name2);
删除主键,添加主键(col_name1, col_name2)
您可能只是想要一个UNIQUE约束。特别是如果您已经有一个代理键。 (例如一个已经存在的代理键是一个AUTO_INCREMENT类型的单列)
下面是唯一约束的sql代码
ALTER TABLE `MyDatabase`.`Provider`
ADD CONSTRAINT CK_Per_Place_Thing_Unique UNIQUE (person,place,thing)
;
ALTER TABLE provider ADD PRIMARY KEY(person,place,thing);
如果一个主键已经存在,那么您需要这样做
ALTER TABLE provider DROP PRIMARY KEY, ADD PRIMARY KEY(person, place, thing);