sql - 如何使用 varchar 字段和 int 自增字段设置复合主键?
问题描述
使用 mariadb,我想创建一个像这样的表:
CREATE TABLE `products` (
`producttype` varchar(15) NOT NULL,
`code` int(6) NOT NULL auto_increment,
`description` varchar(200) NOT NULL,
`price` double default 0.0,
`stock` int default 0,
PRIMARY KEY(`producttype`, `code`)
因此,产品(例如电视)的 id 可能是:TV001。
这给出了下一个错误:不正确的表定义;只能有一个自动列,并且必须将其定义为键。
如果您真的希望产品的 id 由类型加上自动增量整数组成,您将如何做到这一点?
谢谢
解决方案
对您的定义稍作更改:(添加的key
部分,以满足错误...one auto column and it must be defined as a key
消息)
CREATE TABLE `products` (
`producttype` varchar(15) NOT NULL,
`code` int(6) NOT NULL auto_increment,
`description` varchar(200) NOT NULL,
`price` double default 0.0,
`stock` int default 0,
key (`code`),
PRIMARY KEY(`producttype`, `code`));
...为我工作:
MariaDB [test]> CREATE TABLE `products` (
-> `producttype` varchar(15) NOT NULL,
-> `code` int(6) NOT NULL auto_increment,
-> `description` varchar(200) NOT NULL,
-> `price` double default 0.0,
-> `stock` int default 0,
-> key (`code`),
-> PRIMARY KEY(`producttype`, `code`));
Query OK, 0 rows affected (0.38 sec)
...然后检查表格:
MariaDB [test]> desc products;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| producttype | varchar(15) | NO | PRI | NULL | |
| code | int(6) | NO | PRI | NULL | auto_increment |
| description | varchar(200) | NO | | NULL | |
| price | double | YES | | 0 | |
| stock | int(11) | YES | | 0 | |
+-------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
推荐阅读
- vba - 如何根据工作表名称将工作表保存到不同的特定文件夹
- python - Scrapy:循环导致变量不更新
- python - 通过 argparse 接受参数
- node.js - 导出 Nodejs 服务器
- jquery - 如何检查是否有更多项目已添加到 html 文档中
- java - 使用流计算句子中每个字母的出现次数
- json - json解析错误中无法识别的令牌'<'
- android-studio - Android Studio Flutter 更好的 PC 要求
- python - 使用networkx在python中修改具有两个不同种群的Erdos-Renyi随机图
- c# - C# JsonConvert.DeserializeObject 使用 GMT+1 或 BST 自定义日期解析