对于一些比较规范的模型来说,只需要定义一个主键就可以了。但是在一些特殊的业务场景下,可能需要定义两个不同的主键。比如说,要记录一个订单的信息,大家可能需要使用订单号和客户ID作为两个主键来保证数据的唯一性。
CREATE TABLE order_info ( order_id INT NOT NULL, customer_id INT NOT NULL, -- 其他字段 PRIMARY KEY (order_id, customer_id) );
在上面的代码中,大家使用了复合主键来定义两个主键,即订单号(order_id)和客户ID(customer_id)。使用复合主键可以保证这两个字段的组合是唯一的。
需要注意的是,对于MYSQL来说,使用多个主键来定义一个表的行为是比较特殊的。在创建表的过程中,只有一个主键可以被赋值为自增类型(一般是表中的第一个主键)。另外,复合主键的排序也是比较重要的,因为他们会影响查询和索引的效率。