1

SQL Server 2014 では、CREATE TYPE ... TABLE名前付きチェック制約はサポートされていません。

これにより、不可解な名前 (例: CK__TT_Income__Incom__72BBEAA9) を持つチェック制約が生成されます。

このような制約は に保存されsys.check_constraintsていますが、 を使用してそのうちの 1 つを名前変更できませんでしたsp_rename

テーブル タイプに関連付けられた制約の名前を変更しようとすると、次のエラー メッセージが表示されます。

メッセージ 15248、レベル 11、状態 1、プロシージャ sp_rename、行 424
パラメータ @objname があいまいであるか、要求された @objtype (オブジェクト) が間違っています。

これが私のテーブルタイプです:

CREATE TYPE IncomeCodeTable AS
   TABLE(IncomeCode char(1)
        CHECK (IncomeCode IN ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
                              'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
                              'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
                              'Y', 'Z', '1', '2', '3', '4'))
                              )*

「最も正しい」試行は、次のリストの最初に表示されます。

EXECUTE sp_rename N'sys.CK__TT_Income__Incom__72BBEAA9', 
                  N'CK_TT_IncomeCodeTable', 'object'

次に、テーブル型の内部形式を試します

EXECUTE sp_rename   
          N'TT_IncomeCodeTable_71C7C670.CK__TT_Income__Incom__72BBEAA9', 
          N'CK_TT_IncomeCodeTable', 'object'

最後に、テーブル型の「ユーザー」形式を試してください

EXECUTE sp_rename N'IncomeCodeTable.CK__TT_Income__Incom__72BBEAA9', 
                  N'CK_TT_IncomeCodeTable', 'object'

要するに、ユーザー定義のテーブル型に関連付けられたチェック制約の名前を変更する方法はありますか?

4

2 に答える 2