]> git.joonet.de Git - adminer.git/commitdiff
MS SQL: Display foreign keys ON UPDATE and ON DELETE
authorJakub Vrana <jakub@vrana.cz>
Wed, 26 Feb 2025 13:23:38 +0000 (14:23 +0100)
committerJakub Vrana <jakub@vrana.cz>
Wed, 26 Feb 2025 15:47:55 +0000 (16:47 +0100)
adminer/drivers/mssql.inc.php
adminer/include/bootstrap.inc.php
changes.txt

index 562b33ad5149c533bbc7d93943c0272f5aba4677..f9fb93183f2b44342e07b1b74dfe3c0ef1f3ccf0 100644 (file)
@@ -571,10 +571,13 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
 
        function foreign_keys($table) {
                $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) {
                        $foreign_key = &$return[$row["FK_NAME"]];
                        $foreign_key["db"] = $row["PKTABLE_QUALIFIER"];
                        $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["target"][] = $row["PKCOLUMN_NAME"];
                }
@@ -724,6 +727,8 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
        }
 
        function driver_config() {
+               global $on_actions;
+               $on_actions = str_replace('RESTRICT|', '', $on_actions);
                $types = array();
                $structured_types = array();
                foreach (array( //! use sys.types
index d5c055115f26ad3136f0c418fffdd7f4ba7e6e52..9d9975575cbc3523403b534e871941b2aa251224 100644 (file)
@@ -80,6 +80,7 @@ include "./include/adminer.inc.php";
 $adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
 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();
 $possible_drivers = $config['possible_drivers'];
 $jush = $config['jush'];
@@ -108,5 +109,3 @@ include "../adminer/include/xxtea.inc.php";
 include "../adminer/include/auth.inc.php";
 include "./include/editing.inc.php";
 include "./include/connect.inc.php";
-
-$on_actions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; ///< @var string used in foreign_keys()
index 11c5a882ee1defb188105d0f402eebf29fe4009f..681603194c1196c81e95e2cbd3a2f84f27857f04 100644 (file)
@@ -4,6 +4,7 @@ SQLite: Add command Check tables
 SQLite: Display all rows of variable values
 SQLite: Remove support for SQLite version 2
 MS SQL: Support export (bug #480)
+MS SQL: Display foreign keys ON UPDATE and ON DELETE
 MongoDB: Remove support for deprecated extension mongo
 
 Adminer-4.17.1 (released 2025-02-25):