Внешний ключ создал дополнительный столбец mySQL - PullRequest
0 голосов
/ 18 мая 2018

В один из моих внешних ключей в таблице в MySQL добавлен дополнительный ненулевой столбец с меткой Customers_CustomerID, поэтому я не могу войти или обновить таблицу в соответствии с требованиями моего назначения.Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Вы действительно не определили, что вы пытаетесь исправить.Что вы имеете в виду, говоря, что «не можете войти или обновить таблицу»?Каким инструментом вы пытаетесь его обновить?

Вот пример из документации MySQL о том, как создать две таблицы и связать их с внешним ключом:

CREATE TABLE parent (
    id INT NOT NULL,
    PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
    id INT,
    parent_id INT,
    INDEX par_ind (parent_id),
    FOREIGN KEY (parent_id)
        REFERENCES parent(id)
        ON DELETE CASCADE
) ENGINE=INNODB;
0 голосов
/ 18 мая 2018

Несколько вариантов. Мы могли бы 1) удалить столбец, 2) изменить столбец, чтобы разрешить значения NULL, 3) изменить определение столбца, указав для него значение, отличное от NULL DEFAULT, 4) добавить триггер BEFORE INSERT, чтобы установить значение, отличное от NULL, на в столбце 5) укажите действительное значение на ВСТАВКЕ. Много возможностей.

Мы могли бы предоставить некоторую дополнительную помощь с синтаксисом для каждой из этих опций, но без определения столбца мы не можем дать точный синтаксис, который потребуется для добавления атрибута значения DEFAULT.

Может быть невозможно удалить столбец, если он используется в индексе или на него ссылается ограничение внешнего ключа. Синтаксис для удаления столбца будет выглядеть примерно так:

ALTER TABLE mytable DROP customers_customerid ;

Синтаксис для изменения определения столбца будет выглядеть примерно так, чтобы указать значение DEFAULT:

ALTER TABLE mytable CHANGE 
  customers_customerid customers_customerid BIGINT NOT NULL DEFAULT '1' COMMENT 'foo' ;
                                                            ^^^^^^^^^^^  

Но нам нужно знать полное определение столбца и повторить это, добавляя / изменяя только те биты, которые необходимо изменить. Вышеприведенное утверждение включает предположения о типе данных и др.

Мы можем получить текущее определение столбца из определения таблицы с помощью следующего предложения:

SHOW CREATE TABLE mytable;

Примечание. Оператор добавления ограничения внешнего ключа не добавляет столбец в таблицу. выполняемые операторы должны включать синтаксис для добавления столбца.

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