sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)で主キーの名前を変更する

    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';

    これはまったく同じことを行います(指定された主キーの名前を変更します)。


    1. MySQLのcaseステートメント

    2. postgresqlでのROLLBACKイベントトリガー

    3. Python:MySQLに接続してクエリを実行するためのベストプラクティスと最も安全な方法

    4. MINUTE()の例– MySQL