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

SQLServerでスキーマバインドビューを作成する

    通常、SQLServerでビューをスキーマバインドすることをお勧めします。

    ビューをスキーマバインドすると、ビューに影響を与えるような方法で基になるテーブルを変更できないようになります。スキーマバインディングがないと、基になるテーブルやその他のオブジェクトが変更されたり、削除されたりする可能性があります。その場合、ビューは期待どおりに機能しなくなります。

    スキーマバインドビューを作成するには、WITH SCHEMABINDINGを使用します ビューを作成するためのT-SQLコードで。

    スキーマバインドビューを作成する例を次に示します。

    CREATE VIEW dbo.v_Cats
    WITH SCHEMABINDING
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    クエリでテーブルを参照するときに2つの部分からなる名前を使用したことに注意してください。dbo.Catsを使用しました。 Catsだけでなく 。これを行うことは、オブジェクトをバインドするスキーマの要件です。 2つの部分からなる名前を使用せずにオブジェクトをスキーマバインドしようとすると、エラーが発生します。

    ビューをスキーマバインドしたので、その定義で参照されているテーブルを削除しようとすると、エラーが発生します:

    DROP TABLE Cats;
    

    結果:

    Msg 3729, Level 16, State 1, Line 1
    Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
    

    2つの部分からなる名前を使用せずにビューをスキーマバインドしようとすると、次のようになります。

    CREATE VIEW dbo.v_Cats
    WITH SCHEMABINDING
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM Cats;
    GO
    

    結果:

    Msg 4512, Level 16, State 3, Procedure v_Cats, Line 5
    Cannot schema bind view 'dbo.v_Cats' because name 'Cats' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
    

    その他のビュー属性

    複数の属性はコンマで区切ることができます。 WITHを指定する必要はありません 属性ごとに。

    たとえば、ビューをスキーマにバインドする場合および 暗号化されている場合、これを行うことができます:

    CREATE VIEW dbo.v_Cats
    WITH SCHEMABINDING, ENCRYPTION
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    1. TYPEPROPERTY()を使用して、SQLServerのデータ型に関する情報を返します。

    2. ON句のMySQL不明列

    3. MySQLまたはMariaDBサーバーの本番環境への準備-パート2-

    4. psycopg2 TypeErrorの処理方法:文字列のフォーマット中にすべての引数が変換されるわけではありません