SQL Serverでは、sp_rename
を使用できます ユーザー定義のデータ型を含む、現在のデータベースでユーザーが作成したオブジェクトの名前を変更するストアドプロシージャ。
構文
構文は次のようになります:
EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';
old_datatype
の場所 名前を変更するユーザー定義のデータ型の名前であり、new_datatype
付けたい新しい名前です。
例
データベース内の現在のユーザー定義のデータ型を見てみましょう。
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
結果:
+----------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |----------+--------------+-------------+---------+-------------------| | clientid | 8 | 0 | 0 | 1 | +----------+--------------+-------------+---------+-------------------+
clientid
という1つのユーザー定義データ型があります 。
名前をclientcode
に変更しましょう 。
EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';
名前をclientcode
に変更する実行 。次のメッセージが表示される場合があります:
Caution: Changing any part of an object name could break scripts and stored procedures.
これにより、基本的に、名前を変更したオブジェクトを参照するストアドプロシージャのスクリプトがあると、それらが壊れて更新する必要があるという注意が必要になります。
これは、このデータ型を使用する既存の列が壊れることを意味するのではないかと思うかもしれません。
幸い、既存の列は問題ないはずです。
ユーザー定義のデータ型の名前を変更した後、そのデータ型を使用する列は、引き続きそのデータ型を新しい名前で使用します。データ型の制限(長さなど)は引き続き適用されます。
次に、ユーザー定義のデータ型のリストをもう一度確認しましょう。
SELECT
name,
max_length,
[precision],
scale,
is_user_defined
FROM sys.types
WHERE is_user_defined = 1;
結果:
+------------+--------------+-------------+---------+-------------------+ | name | max_length | precision | scale | is_user_defined | |------------+--------------+-------------+---------+-------------------| | clientcode | 8 | 0 | 0 | 1 | +------------+--------------+-------------+---------+-------------------+
予想どおり、指定どおりに名前が変更されました。