Я хочу, чтобы создать внешний ключ из 1 таблицыДобавить внешний ключ, если существует
CREATE TABLE IF NOT EXISTS PEs (id INT(20) AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Message varchar(30), CoordsX double(9,6) SIGNED, CoordsY double(9,6) SIGNED, CoordsZ double(9,6) SIGNED, Status smallint(1) DEFAULT 1, world varchar(20))
на второй таблице
CREATE TABLE IF NOT EXISTS`rh_pe`.`attributes` (`toid` INT(20) NOT NULL , `Kommentar` VARCHAR(60) NOT NULL , `Aktion` varchar(10) NOT NULL , `Person1` INT NOT NULL , `Person2` INT ) ENGINE = InnoDB;
Внешний ключ, должно быть так:
ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
Я пробовал с
IF NOT EXISTS(ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT);
и
ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY IF NOT EXISTS (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
Я не думаю, что есть способ сделайте это в обычном SQL. Вам нужно будет использовать хранимую процедуру, которая запрашивает 'INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS'. См. Http://dev.mysql.com/doc/refman/5.7/en/referential-constraints-table.html – Barmar
Возможный дубликат [MySQL: Добавить ограничение, если оно не существует] (http://stackoverflow.com/questions/ 3919226/mysql-add-constraint-if-not-exists) –
@MatteoTassinari Хорошо, в моей попытке, прежде чем у меня возникла орфографическая ошибка. Благодарю. – 12Hannibal12