CREATE TABLE example ( col1 VARCHAR(50) NOT NULL, col2 VARCHAR(50) NOT NULL, id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) key(col1,col2))
时间: 2024-01-13 18:02:40 浏览: 158
这个 SQL 语句中定义了一个名为 `example` 的表,其中 `col1` 和 `col2` 两个字段被定义为复合主键,`id` 则被定义为自增主键。这个语句是合法的,但是需要注意的是,自增主键的存在会自动创建一个唯一索引,因此在这个语句中,`id` 列的定义已经包含了一个主键索引,而复合主键的定义又包含了一个唯一索引。这样会导致索引的冗余,不利于性能优化。
因此,如果想要同时定义自增主键和复合主键,可以采用以下的 SQL 语句:
```sql
CREATE TABLE example (
col1 VARCHAR(50) NOT NULL,
col2 VARCHAR(50) NOT NULL,
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (col1, col2, id)
);
```
上面的语句中,我们定义了一个复合主键,包括 `col1`、`col2` 和 `id` 三个字段,其中 `id` 字段被定义为自增主键。这样可以同时满足复合主键和自增主键的需求,并且只需要定义一个主键索引。
阅读全文
相关推荐







