Как установить составной первичный ключ, используя поле varchar и поле с автоматическим приращением int? - PullRequest
0 голосов
/ 12 января 2020

Используя 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`)

Таким образом, идентификатор продукта, например телевизора, может быть: TV001.

Это дает следующая ошибка: неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ.

Если вы действительно хотите, чтобы идентификатор продукта формировался типом плюс автоматически возрастающее целое число, как бы вы это сделали?

Спасибо

1 Ответ

1 голос
/ 13 января 2020

Небольшое изменение в вашем определении: (добавленная часть 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...