SQL Serverでは、sp_rename
を使用できます 主キーを含む、現在のデータベースでユーザーが作成したオブジェクトの名前を変更するためのストアドプロシージャ。
これは、名前が自動的に割り当てられた主キーがあり、より読みやすい名前を付けたい場合に便利です。
名前を明示的に指定せずに主キーを作成すると、SQLServerは自動的にその名前を委任します。このような名前には通常、長い数字の接尾辞が含まれているため、覚えにくくなっています。その主キーを参照する必要がある場合(たとえば、コード、ドキュメントなど)、そのような名前はあなたの生活をより困難にする可能性があります。幸い、sp_rename
この名前をすばやく簡単に変更する方法を提供します。
構文
sp_rename
の構文 このようになります:
sp_rename
[ @objname = ] 'object_name' ,
[ @newname = ] 'new_name'
[ , [ @objtype = ] 'object_type' ]
主キー(およびその他の制約)の場合、オブジェクトタイプはOBJECT
です。 。
例
まず、変更する主キーの名前を取得しましょう:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS PrimaryKey
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))
AND type = 'PK';
結果:
+--------------+--------------------------+ | SchemaName | PrimaryKey | |--------------+--------------------------| | dbo | PK__t1__3213663B10938530 | +--------------+--------------------------+
これは、t1
というテーブルの主キーです。 、では、先に進み、その主キーの名前を変更します。
主キーの名前を変更するときは、現在の名前のスキーマを含める必要があります。
例:
EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1';
SQL Serverで主キー(またはその他のオブジェクト)の名前を変更すると、おそらく次のメッセージが表示されます。
Caution: Changing any part of an object name could break scripts and stored procedures.
これは基本的に、オブジェクトを参照するスクリプトやストアドプロシージャが壊れることがあり、それに応じて新しい名前を反映するように更新する必要があることを示しています。
とにかく、主キーの名前が変更されました。
前のクエリを再度実行することで、これを確認できます:
SELECT
SCHEMA_NAME(schema_id) AS SchemaName,
name AS PrimaryKey
FROM sys.objects
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))
AND type = 'PK';
結果:
+--------------+--------------+ | SchemaName | PrimaryKey | |--------------+--------------| | dbo | PK_t1 | +--------------+--------------+
オブジェクトタイプを含む
3番目の引数としてオブジェクトタイプを含めることもできます。主キーやその他の制約については、OBJECT
を使用してください :
EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1', 'OBJECT';
パラメータ名を含める
他のストアドプロシージャと同様に、sp_rename
を呼び出すときにパラメータ名を含めることもできます :
EXEC sp_rename
@objname = 'dbo.PK__t1__3213663B10938530',
@newname = 'PK_t1',
@objtype = 'OBJECT';
これはまったく同じことを行います(指定された主キーの名前を変更します)。