mirror of
https://github.com/vrana/adminer.git
synced 2025-08-11 09:04:02 +02:00
Create single column foreign key in table structure
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@778 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
<?php
|
||||
$partition_by = array('HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'LIST');
|
||||
|
||||
$referencable_primary = referencable_primary($_GET["create"]);
|
||||
$foreign_keys = array();
|
||||
foreach ($referencable_primary as $table_name => $field) {
|
||||
$foreign_keys[idf_escape($table_name) . "." . idf_escape($field["field"])] = $table_name;
|
||||
}
|
||||
|
||||
if (strlen($_GET["create"])) {
|
||||
$orig_fields = fields($_GET["create"]);
|
||||
}
|
||||
@@ -28,9 +34,10 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"]
|
||||
ksort($_POST["fields"]);
|
||||
$after = "FIRST";
|
||||
foreach ($_POST["fields"] as $key => $field) {
|
||||
if (strlen($field["field"]) && isset($types[$field["type"]])) {
|
||||
$fields[] = "\n" . (!strlen($_GET["create"]) ? " " : (strlen($field["orig"]) ? "CHANGE " . idf_escape($field["orig"]) . " " : "ADD "))
|
||||
. idf_escape($field["field"]) . process_type($field)
|
||||
$type_field = (isset($types[$field["type"]]) ? $field : $referencable_primary[$foreign_keys[$field["type"]]]);
|
||||
if (strlen($field["field"]) && $type_field) {
|
||||
$fields[] = "\n" . (strlen($_GET["create"]) ? (strlen($field["orig"]) ? "CHANGE " . idf_escape($field["orig"]) . " " : "ADD ") : " ")
|
||||
. idf_escape($field["field"]) . process_type($type_field)
|
||||
. ($field["null"] ? " NULL" : " NOT NULL") // NULL for timestamp
|
||||
. (strlen($_GET["create"]) && strlen($field["orig"]) && isset($orig_fields[$field["orig"]]["default"]) && $field["type"] != "timestamp" ? " DEFAULT " . $dbh->quote($orig_fields[$field["orig"]]["default"]) : "") //! timestamp
|
||||
. ($key == $_POST["auto_increment_col"] ? " AUTO_INCREMENT$auto_increment_index" : "")
|
||||
@@ -38,6 +45,9 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["drop_col"] && !$_POST["up"]
|
||||
. (strlen($_GET["create"]) ? " $after" : "")
|
||||
;
|
||||
$after = "AFTER " . idf_escape($field["field"]);
|
||||
if (!isset($types[$field["type"]])) {
|
||||
$fields[] = (strlen($_GET["create"]) ? " ADD" : "") . " FOREIGN KEY (" . idf_escape($field["field"]) . ") REFERENCES " . idf_escape($foreign_keys[$field["type"]]) . " (" . idf_escape($type_field["field"]) . ")";
|
||||
}
|
||||
} elseif (strlen($field["orig"])) {
|
||||
$fields[] = "\nDROP " . idf_escape($field["orig"]);
|
||||
}
|
||||
@@ -129,7 +139,7 @@ if ($suhosin && count($row["fields"]) > $suhosin) {
|
||||
<input type="submit" value="<?php echo lang('Save'); ?>" />
|
||||
</p>
|
||||
<table cellspacing="0" id="edit-fields">
|
||||
<?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin); ?>
|
||||
<?php $column_comments = edit_fields($row["fields"], $collations, "TABLE", $suhosin, $foreign_keys); ?>
|
||||
</table>
|
||||
<p>
|
||||
<?php echo lang('Auto Increment'); ?>: <input name="Auto_increment" size="4" value="<?php echo intval($row["Auto_increment"]); ?>" />
|
||||
|
Reference in New Issue
Block a user