mysql 选择两列做主键_mysql两列主键,带自动递增

在MySQL中,可以设置多列作为主键,并在辅助列上使用AUTO_INCREMENT。例如,在`animals`表中,`grp`和`id`共同构成主键,`id`自动递增。在`mytable`示例中,`database_id`和`table_id`为主键,`table_id`自动递增。这种做法适用于需要按组排序数据的情况。
摘要由CSDN通过智能技术生成

如果你使用myisam对于MyISAM和BDB表,您可以在多列索引中的辅助列上指定AUTO_INCREMENT。在这种情况下,AUTO_INCREMENT列的生成值计算为MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。当您想要将数据放入有序组时,这非常有用。

CREATE TABLE animals (

grp ENUM('fish','mammal','bird') NOT NULL,

id MEDIUMINT NOT NULL AUTO_INCREMENT,

name CHAR(30) NOT NULL,

PRIMARY KEY (grp,id)

) ENGINE=MyISAM;

INSERT INTO animals (grp,name) VALUES

('mammal','dog'),('mammal','cat'),

('bird','penguin'),('fish','lax'),('mammal','whale'),

('bird','ostrich');

SELECT * FROM animals ORDER BY grp,id;

Which returns:

+--------+----+---------+

| grp    | id | name    |

+--------+----+---------+

| fish   |  1 | lax     |

| mammal |  1 | dog     |

| mammal |  2 | cat     |

| mammal |  3 | whale   |

| bird   |  1 | penguin |

| bird   |  2 | ostrich |

+--------+----+---------+

对于你的例子:

mysql> CREATE TABLE mytable (

->     table_id MEDIUMINT NOT NULL AUTO_INCREMENT,

->     database_id MEDIUMINT NOT NULL,

->     other_column CHAR(30) NOT NULL,

->     PRIMARY KEY (database_id,table_id)

-> ) ENGINE=MyISAM;

Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO mytable (database_id, other_column) VALUES

->     (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');

Query OK, 6 rows affected (0.00 sec)

Records: 6  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM mytable ORDER BY database_id,table_id;

+----------+-------------+--------------+

| table_id | database_id | other_column |

+----------+-------------+--------------+

|        1 |           1 | Foo          |

|        2 |           1 | Bar          |

|        3 |           1 | Bam          |

|        1 |           2 | Baz          |

|        2 |           2 | Zam          |

|        1 |           3 | Zoo          |

+----------+-------------+--------------+

6 rows in set (0.00 sec)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值