r3693 another FK update: Link-Port-RackObject
authorDenis Ovsienko <infrastation@yandex.ru>
Sun, 30 May 2010 14:18:30 +0000 (14:18 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Sun, 30 May 2010 14:18:30 +0000 (14:18 +0000)
inc/database.php
install/init-structure.sql
upgrade.php

index d897287..1f7791b 100644 (file)
@@ -652,8 +652,6 @@ function commitDeleteObject ($object_id = 0)
        destroyTagsForEntity ('object', $object_id);
        $dbxlink->query("DELETE FROM IPv4LB WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM IPv4Allocation WHERE object_id = ${object_id}");
-       $dbxlink->query("DELETE FROM Link WHERE porta IN (SELECT id FROM Port WHERE object_id = ${object_id}) OR portb IN (SELECT id FROM Port WHERE object_id = ${object_id})");
-       $dbxlink->query("DELETE FROM Port WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM IPv4NAT WHERE object_id = ${object_id}");
        $dbxlink->query("DELETE FROM Atom WHERE molecule_id IN (SELECT new_molecule_id FROM MountOperation WHERE object_id = ${object_id})");
        $dbxlink->query("DELETE FROM Molecule WHERE id IN (SELECT new_molecule_id FROM MountOperation WHERE object_id = ${object_id})");
index 4eb219c..584d82f 100644 (file)
@@ -215,8 +215,8 @@ CREATE TABLE `Link` (
   PRIMARY KEY  (`porta`,`portb`),
   UNIQUE KEY `porta` (`porta`),
   UNIQUE KEY `portb` (`portb`),
-  CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`),
-  CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`)
+  CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`) ON DELETE CASCADE,
+  CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE `Molecule` (
@@ -253,7 +253,7 @@ CREATE TABLE `Port` (
   KEY `l2address` (`l2address`),
   KEY `Port-FK-iif-oif` (`iif_id`,`type`),
   CONSTRAINT `Port-FK-iif-oif` FOREIGN KEY (`iif_id`, `type`) REFERENCES `PortInterfaceCompat` (`iif_id`, `oif_id`),
-  CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`)
+  CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE `PortAllowedVLAN` (
index 9e3caf2..7010d03 100644 (file)
@@ -667,6 +667,15 @@ CREATE TABLE `VLANValidID` (
                        $query[] = "ALTER TABLE RackObjectHistory ADD CONSTRAINT `RackObjectHistory-FK-object_id` FOREIGN KEY (id) REFERENCES `RackObject` (`id`) ON DELETE CASCADE";
                        $query[] = "ALTER TABLE MountOperation ADD CONSTRAINT `MountOperation-FK-object_id` FOREIGN KEY (object_id) REFERENCES RackObject (id) ON DELETE CASCADE";
                        $query[] = "ALTER TABLE RackSpace ADD CONSTRAINT `RackSpace-FK-object_id` FOREIGN KEY (object_id) REFERENCES RackObject (id) ON DELETE CASCADE";
+                       $query[] = "ALTER TABLE Link DROP FOREIGN KEY `Link-FK-a`";
+                       $query[] = "ALTER TABLE Link ADD CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`) ON DELETE CASCADE";
+                       $query[] = "ALTER TABLE Link DROP FOREIGN KEY `Link-FK-b`";
+                       $query[] = "ALTER TABLE Link ADD CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`) ON DELETE CASCADE";
+                       $query[] = "ALTER TABLE Port DROP FOREIGN KEY `Port-FK-object_id`";
+                       $query[] = "ALTER TABLE Port ADD CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE";
+                       $query[] = "";
+                       $query[] = "";
+                       $query[] = "";
                        $query[] = "UPDATE Config SET varvalue = '0.18.1' WHERE varname = 'DB_VERSION'";
                        break;
                default: