【发布时间】:2016-11-10 16:53:18
【问题描述】:
我想从 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的存储过程。见dev.mysql.com/doc/refman/5.7/en/… -
@MatteoTassinari 好的,在我遇到拼写错误之前的尝试。谢谢。