MySql;правильный способ обновления полей таблицы - PullRequest
0 голосов
/ 09 февраля 2019

При попытке описать таблицу я получаю таблицу с отсутствующей информацией (см. Первую таблицу);Что было бы лучшим способом обновить эту таблицу так, чтобы она выглядела как вторая?Мой опыт работы с SQL не такой сильный, поэтому я хотел бы услышать идеи о том, как это сделать

Первая таблица (как она есть на самом деле)

+-----------+------------------+------+-----+---------+-------+
| Field     | Type             | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| config_id | int(10) unsigned | NO   |     | 0       |       |
| scope     | varchar(8)       | NO   |     | default |       |
| scope_id  | int(11)          | NO   |     | 0       |       |
| path      | varchar(255)     | NO   |     | general |       |
| value     | text             | YES  |     | NULL    |       |
+-----------+------------------+------+-----+---------+-------+    

Вторая таблица (как следуетбыть)

+-----------+------------------+------+-----+---------+----------------+
| Field     | Type             | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+----------------+
| config_id | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| scope     | varchar(8)       | NO   | MUL | default |                |
| scope_id  | int(11)          | NO   |     | 0       |                |
| path      | varchar(255)     | NO   |     | general |                |
| value     | text             | YES  |     | NULL    |                |
+-----------+------------------+------+-----+---------+----------------+

1 Ответ

0 голосов
/ 09 февраля 2019

Я вижу следующие различия между двумя таблицами:

  • столбец config_id должен быть auto_increment, а также primary key таблицы
  • a (не уникально)для столбца scope

отсутствует индекс Следующее выражение должно изменить таблицу по мере необходимости:

 ALTER TABLE mytable 
    MODIFY COLUMN config_id INT auto_increment,
    ADD PRIMARY KEY (config_id),
    ADD INDEX idx_scope(scope)
;

PS: DEFAULT NULL не имеет смысла для config_id:поскольку это первичный ключ, ваша СУБД никогда не позволит установить для него значение NULL.

Обратите внимание, что этот ответ основан только на предоставленной вами информации.Выполнение этого оператора не обязательно сделает структуры таблиц строго эквивалентными, так как могут быть другие различия, которые нельзя увидеть в представлении, которое вы предоставили.Вы можете получить полный оператор DDL, описывающий таблицу, используя синтаксис SHOW CREATE TABLE mytable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...