mysql表的聯合主鍵
是由表的多列字段值
的拼接成的主鍵,來形成唯一性。和以往單個列的普通主鍵如id(自增長)的區別一個字段主鍵和多個字段的區別。
如果一個表有id,name,sex三個字段,那普通主鍵表的主鍵爲id值區分唯一性。聯合主鍵爲id+name值來區別唯一性,或id+name+sex拼接的值來區分唯一性。
聯合主鍵的設置:
1.新建表的設置
create table test(
id int(10) not null auto_increment,
name varchar(20) not null,
sex int(1) not null,
primary key (id,name,sex)
);
2.已有表修改爲複合主鍵
alter table 表名 add primary key (字段1,字段2,字段3);
*如果執行上面操作提示表不能有多個主鍵錯誤時,需要先清理主鍵約束
,再執行添加。
alter table 表名 DROP PRIMARY KEY add primary key (字段1,字段2,字段3);
3.適用場景舉例
如在一個商城的訂單表中訂單流水編號時唯一的,當同單個人購買多個不同物品時就需要用到聯合主鍵(id+name+訂單id)了。
複合主鍵的:
複合主鍵與聯合主鍵的設置基本一樣,共同點在於都是通過多個字段確定主鍵,區別是聯合主鍵通過如id+name+sex等字段確定主鍵,並且自增id有和其他表有id關聯;複合主鍵不需要自增id,即如name+sex字段確定唯一形成主鍵,一般在數據上報等情況數據不能重複數據時使用。