如题 复合主键表没用过 不知道怎么用

解决方案 »

  1.   

    由两个字段共同形成主键。
    比如学生成绩,学号,或课程均无法单独构成主键。但学号+课程可以为主键。create table sc (
    studentno int,
    courseid int,
    score int,
    primary key (studentno,courseid)
    );
      

  2.   

    mysql> create table cmplcate(id smallint,name varchar(2),primary key(id,name));
    Query OK, 0 rows affected (0.08 sec)mysql> insert into cmplcate values(1,"a");
    Query OK, 1 row affected (0.03 sec)mysql> insert into cmplcate values(1,"b");
    Query OK, 1 row affected (0.02 sec)mysql> insert into cmplcate values(1,"b");
    ERROR 1062 (23000): Duplicate entry '1-b' for key 'PRIMARY'
      

  3.   

    如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式 
    alter table tb_name add primary key (字段1,字段2,字段3);例如:一个销售表里面,每天每种商品只有一条记录,考虑记录的唯一性,可以将日期和商品组合成主键,即 primary key (`date`,product_id)