V SQL Server můžete použít sp_rename
uložená procedura k přejmenování uživatelem vytvořeného objektu v aktuální databázi, včetně uživatelem definovaného datového typu.
Syntaxe
Syntaxe vypadá takto:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';
Kde old_datatype
je název uživatelem definovaného datového typu, který chcete přejmenovat, a new_datatype
je nové jméno, které mu chcete dát.
Příklad
Podívejme se na aktuální uživatelem definované datové typy v naší databázi.
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Výsledek:
+----------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |----------+--------------+-------------+---------+-------------------| | clientid | 8 | 0 | 0 | 1 | +----------+--------------+-------------+---------+-------------------+
Máme jeden uživatelsky definovaný datový typ s názvem clientid
.
Přejmenujme jej na clientcode
.
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';
Spuštěním se přejmenuje na clientcode
. Může se zobrazit následující zpráva:
Caution: Changing any part of an object name could break scripts and stored procedures.
To nás v podstatě upozorňuje na to, že pokud máme nějaké skripty uložených procedur, které odkazují na náš přejmenovaný objekt, pak se pokazí a budeme je muset aktualizovat.
Možná se ptáte, jestli to znamená, že všechny existující sloupce, které používají tento datový typ, budou nyní nefunkční?
Naštěstí by stávající kolony měly být v pořádku.
Po přejmenování uživatelem definovaného datového typu budou všechny sloupce, které používají tento datový typ, nadále používat tento datový typ s novým názvem. Veškerá omezení typu dat (jako je délka atd.) budou nadále vynucována.
Nyní se znovu podíváme na náš seznam uživatelsky definovaných datových typů:
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
Výsledek:
+------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------+--------------+-------------+---------+-------------------| | clientcode | 8 | 0 | 0 | 1 | +------------+--------------+-------------+---------+-------------------+
Podle očekávání byl přejmenován podle specifikace.