создать и обновить столбец в MySQL - PullRequest
0 голосов
/ 19 ноября 2018

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

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

-- Actualizando la tabla: action

DELIMITER $$
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'action'
AND table_schema = 'ibexsales_dev'
AND column_name = 'company_id'
) > 0,
"SELECT 1",
"ALTER TABLE action ADD company_id INT(11) NOT NULL"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
$$ DELIMITER ;

Мне нужно добавить этот код:

ALTER TABLE `ibexsales_dev`.`action` 
                    ADD CONSTRAINT `fk_company_id_action` 
                    FOREIGN KEY (`company_id`) REFERENCES company(`company_id`);

Я пробовал это, но это не работает:

) > 0,
"SELECT 1",
"ALTER TABLE action ADD company_id INT(11) NOT NULL",
"    ALTER TABLE `ibexsales_dev`.`action` 
                    ADD CONSTRAINT `fk_company_id_action` 
                    FOREIGN KEY (`company_id`) REFERENCES company(`company_id`); "
));

1 Ответ

0 голосов
/ 19 ноября 2018

Вы не повторяете ALTER TABLE. Один запрос ALTER TABLE может содержать несколько изменений, разделенных запятой.

) > 0,
"SELECT 1",
"ALTER TABLE action ADD company_id INT(11) NOT NULL,
                    ADD CONSTRAINT `fk_company_id_action` 
                        FOREIGN KEY (`company_id`) REFERENCES company(`company_id`); "
));
...