2016-11-10 3 views
-1

vorhanden Ich möchte einen Fremdschlüssel von 1 Tabelle sollte wie so seinFremdschlüssel hinzufügen, wenn

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)) 

auf den zweiten Tabellen

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; 

der Fremdschlüssel erstellen:

ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT; 

Ich habe versucht mit

IF NOT EXISTS(ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT); 

und

ALTER TABLE `attributes` ADD CONSTRAINT `Const` FOREIGN KEY IF NOT EXISTS (`toid`) REFERENCES `pes`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT 
+0

Ich glaube nicht, es gibt einen Weg zu mach das in gewöhnlichem SQL. Sie müssen eine gespeicherte Prozedur verwenden, die 'INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS' abfragt. Siehe http://dev.mysql.com/doc/refman/5.7/en/referential-constraints-table.html – Barmar

+1

Mögliches Duplikat von [MySQL: Einschränkung hinzufügen, falls nicht vorhanden] (http://stackoverflow.com/questions/ 3919226/mysql-add-constraint-wenn-nicht-existiert) –

+0

@MatteoTassinari Okay, in meinem Versuch, bevor ich einen Schreibfehler habe. Vielen Dank. – 12Hannibal12

Antwort

0

Beide Ihrer Tabelle Beispiele haben die gleichen Namen, so suposed ich, dass Ihr zweiter Tabellenname „pes“ ist, wie Sie in Ihren Constraint Beispielen zu nennen. Dieser sollte funktionieren:

ich nicht verwendet haben, die „if (nicht) existiert“ clausule dafür, aber man kann hier eine ähnliche Frage finden: If Foreign Key Not Exist Then Add Foreign Key Constraint(Or Drop a Foreign Key Constraint If Exist) without using Name?

+0

Entschuldigung, ich habe den falschen Code der ersten Tabelle verwendet. Es ist bearbeitet. – 12Hannibal12

+0

NP, hat es funktioniert ??? –

+0

Ich habe den Code in dem Link vom Kommentar zu meiner Frage verwendet, also weiß ich nicht, ob deine Arbeit funktioniert – 12Hannibal12

Verwandte Themen