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

T-SQLを使用してSQLServerのCHECK制約の名前を変更します

    sp_renameを使用できます CHECKの名前を変更するシステムストアドプロシージャ SQLServerの制約。

    このストアドプロシージャの目的は、現在のデータベースでユーザーが作成したオブジェクトの名前を変更できるようにすることです。したがって、これを使用して、テーブル、列、エイリアスデータ型などの他のオブジェクトの名前を変更することもできます。

    構文

    sp_renameの構文 このようになります:

    sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
        [ , [ @objtype = ] 'object_type' ]
    

    したがって、コードは次のようになります。

    sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';
    

    Microsoftのドキュメントには、制約の名前を変更するときに、既存の名前をスキーマ名で修飾する必要があると記載されていることに注意してください。

    次の例は、CHECKの名前を変更する方法を示しています 制約。

    例1-名前を変更する制約を選択する

    まず、CHECKをリストアップしましょう データベースに制約があるため、名前を変更するものを決定できます。

    SELECT 
      name,
      SCHEMA_NAME(schema_id) AS 'Schema',
      OBJECT_NAME(parent_object_id) AS 'Table',
      definition
    FROM sys.check_constraints;
    

    結果:

    +-----------------+----------+----------------+----------------------------------------+
    | name            | Schema   | Table          | definition                             |
    |-----------------+----------+----------------+----------------------------------------|
    | chkPrice        | dbo      | ConstraintTest | ([Price]>(0))                          |
    | chkValidEndDate | dbo      | ConstraintTest | ([EndDate]>=[StartDate])               |
    | chkTeamSize     | dbo      | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) |
    | chkJobTitle     | dbo      | Occupation     | ([JobTitle]<>'Digital Nomad')          |
    +-----------------+----------+----------------+----------------------------------------+
    

    2番目の制約の名前を変更しましょう( chkValidEndDate

    有効 を削除しましょう chkEndDate になるように分割します 。

    例2–制約の名前を変更する

    これを実行して、制約の名前を変更します。

    sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
    

    したがって、古い(既存の)名前が最初に来て、次に新しい名前が続きます。

    したがって、すべてのCHECKを選択すると もう一度制約すると、次の結果が得られます。

    SELECT 
      name,
      SCHEMA_NAME(schema_id) AS 'Schema',
      OBJECT_NAME(parent_object_id) AS 'Table',
      definition
    FROM sys.check_constraints;
    

    結果:

    +-------------+----------+----------------+----------------------------------------+
    | name        | Schema   | Table          | definition                             |
    |-------------+----------+----------------+----------------------------------------|
    | chkPrice    | dbo      | ConstraintTest | ([Price]>(0))                          |
    | chkEndDate  | dbo      | ConstraintTest | ([EndDate]>=[StartDate])               |
    | chkTeamSize | dbo      | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) |
    | chkJobTitle | dbo      | Occupation     | ([JobTitle]<>'Digital Nomad')          |
    +-------------+----------+----------------+----------------------------------------+
    

    制約の名前が変更されました。

    前述のように、sp_rename ストアドプロシージャは、CHECKだけに限定されません。 制約。まったく同じ構文を使用して、外部キー制約、テーブル、列、エイリアスデータ型、またはその他のユーザー定義オブジェクトの名前を変更できます。

    ただし、Microsoftは、ストアドプロシージャ、トリガー、ユーザー定義関数、またはビューの名前を変更しないことをお勧めします。このような場合は、代わりにオブジェクトを削除して、新しい名前で再作成することをお勧めします。


    1. postgresのクラスター化インデックスについて

    2. MariaDBで数値を通貨としてフォーマットする

    3. SQLクエリでオプションのパラメータを処理する方法は?

    4. SQLite Count()をGROUP BYと組み合わせて、結果セットに「カウント」列を追加します