1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-08 07:36:44 +02:00

MS SQL: Display foreign keys ON UPDATE and ON DELETE

This commit is contained in:
Jakub Vrana
2025-02-26 14:23:38 +01:00
parent 76cc7c6614
commit d54be5ac2e
3 changed files with 7 additions and 2 deletions

View File

@@ -571,10 +571,13 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
function foreign_keys($table) { function foreign_keys($table) {
$return = array(); $return = array();
$on_actions = array("CASCADE", "NO ACTION", "SET NULL", "SET DEFAULT");
foreach (get_rows("EXEC sp_fkeys @fktable_name = " . q($table) . ", @fktable_owner = " . q(get_schema())) as $row) { foreach (get_rows("EXEC sp_fkeys @fktable_name = " . q($table) . ", @fktable_owner = " . q(get_schema())) as $row) {
$foreign_key = &$return[$row["FK_NAME"]]; $foreign_key = &$return[$row["FK_NAME"]];
$foreign_key["db"] = $row["PKTABLE_QUALIFIER"]; $foreign_key["db"] = $row["PKTABLE_QUALIFIER"];
$foreign_key["table"] = $row["PKTABLE_NAME"]; $foreign_key["table"] = $row["PKTABLE_NAME"];
$foreign_key["on_update"] = $on_actions[$row["UPDATE_RULE"]];
$foreign_key["on_delete"] = $on_actions[$row["DELETE_RULE"]];
$foreign_key["source"][] = $row["FKCOLUMN_NAME"]; $foreign_key["source"][] = $row["FKCOLUMN_NAME"];
$foreign_key["target"][] = $row["PKCOLUMN_NAME"]; $foreign_key["target"][] = $row["PKCOLUMN_NAME"];
} }
@@ -724,6 +727,8 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
} }
function driver_config() { function driver_config() {
global $on_actions;
$on_actions = str_replace('RESTRICT|', '', $on_actions);
$types = array(); $types = array();
$structured_types = array(); $structured_types = array();
foreach (array( //! use sys.types foreach (array( //! use sys.types

View File

@@ -80,6 +80,7 @@ include "./include/adminer.inc.php";
$adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer); $adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
$on_actions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; ///< @var string used in foreign_keys()
$config = driver_config(); $config = driver_config();
$possible_drivers = $config['possible_drivers']; $possible_drivers = $config['possible_drivers'];
$jush = $config['jush']; $jush = $config['jush'];
@@ -108,5 +109,3 @@ include "../adminer/include/xxtea.inc.php";
include "../adminer/include/auth.inc.php"; include "../adminer/include/auth.inc.php";
include "./include/editing.inc.php"; include "./include/editing.inc.php";
include "./include/connect.inc.php"; include "./include/connect.inc.php";
$on_actions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; ///< @var string used in foreign_keys()

View File

@@ -4,6 +4,7 @@ SQLite: Add command Check tables
SQLite: Display all rows of variable values SQLite: Display all rows of variable values
SQLite: Remove support for SQLite version 2 SQLite: Remove support for SQLite version 2
MS SQL: Support export (bug #480) MS SQL: Support export (bug #480)
MS SQL: Display foreign keys ON UPDATE and ON DELETE
MongoDB: Remove support for deprecated extension mongo MongoDB: Remove support for deprecated extension mongo
Adminer-4.17.1 (released 2025-02-25): Adminer-4.17.1 (released 2025-02-25):