]> git.joonet.de Git - adminer.git/commitdiff
MS SQL: Foreign key in create table
authorJakub Vrana <jakub@vrana.cz>
Sun, 28 Nov 2010 16:39:07 +0000 (17:39 +0100)
committerJakub Vrana <jakub@vrana.cz>
Mon, 29 Nov 2010 21:02:11 +0000 (22:02 +0100)
adminer/create.inc.php
adminer/drivers/mssql.inc.php

index 4c63a376159af2d89d51fb1523e09d98373efda5..2b5bd327c0861a508802e31d1bace511e659b476 100644 (file)
@@ -44,7 +44,7 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"]
                                        $fields[] = array($field["orig"], $process_field, $after);
                                }
                                if (isset($foreign_key)) {
-                                       $foreign[] = ($TABLE != "" ? "ADD" : " ") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . table($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . ")" . (in_array($field["on_delete"], $on_actions) ? " ON DELETE $field[on_delete]" : "");
+                                       $foreign[idf_escape($field["field"])] = ($TABLE != "" ? "ADD" : " ") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . table($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . ")" . (in_array($field["on_delete"], $on_actions) ? " ON DELETE $field[on_delete]" : "");
                                }
                                $after = "AFTER " . idf_escape($field["field"]);
                        } elseif ($field["orig"] != "") {
index 2ee9ecb509bcdbc5d9636b52aa4d8dd6ecc0e648..422ca301b26c6286e326b15a6c55d5481e0cc01f 100644 (file)
@@ -405,11 +405,11 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
                        $column = idf_escape($field[0]);
                        $val = $field[1];
                        if (!$val) {
-                               $alter["DROP"][] = " COLUMN $field[0]";
+                               $alter["DROP"][] = " COLUMN $column";
                        } else {
                                $val[1] = preg_replace("~( COLLATE )'(\\w+)'~", "\\1\\2", $val[1]);
                                if ($field[0] == "") {
-                                       $alter["ADD"][] = "\n  " . implode("", $val);
+                                       $alter["ADD"][] = "\n  " . implode("", $val) . ($table == "" ? substr($foreign[$val[0]], 16 + strlen($val[0])) : ""); // 16 - strlen("  FOREIGN KEY ()")
                                } else {
                                        unset($val[6]); //! identity can't be removed
                                        if ($column != $val[0]) {