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

SQLServerのビューからSCHEMABINDINGを削除します

    ビューをスキーマバインドする目的は、ビューで参照されるベーステーブルを、ビュー定義に影響を与えるような方法で変更できないようにすることです。

    これは通常、良いことです。結局のところ、誰かがやって来て、あなたの見方が依存しているテーブルを落としてほしくないのですよね?

    しかし、ビューによって参照される1つ以上のテーブルに変更を加える必要がある場合はどうなりますか?

    この場合、ビューからスキーマバインディングを削除し、ベーステーブルに変更を加えてから、スキーマバインディングを再適用できます。

    ビューからスキーマバインディングを削除するには、次の2つの方法があります。

    • ビューを変更して、その定義でスキーマバインディングが指定されないようにします。
    • ビューを削除します(必要に応じて、スキーマをバインドせずにビューを再作成します)。

    スキーマバインドビューの例

    まず、スキーマにバインドされたビューの例を次に示します。

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

    WITH SCHEMABINDINGが含まれているため、スキーマバインドビューであることがわかります。 その定義で。スキーマバインディングを削除するには、そのビットを削除するだけです。

    オプション1-ビューを変更する

    このビューを変更してスキーマバインディングを削除するには、次のコードを使用できます。

    ALTER VIEW dbo.v_Cats
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    CREATEを変更するだけでした ALTERWITH SCHEMABINDINGを削除します 。

    オプション2–ビューをドロップ

    ビューを削除してから、スキーマをバインドせずに再作成する例を次に示します。

    DROP VIEW IF EXISTS dbo.v_Cats;
    GO
    
    CREATE VIEW dbo.v_Cats
    AS
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats;
    GO
    

    この場合、DROP IF EXISTS構文を使用しました。これにより、ビューが存在しない場合にエラーが発生するのを防ぎます。


    1. 条件付き書式を使用してMicrosoftAccessレポートのレコードまたは値を強調表示する方法

    2. Oracleの日付が週末かどうかを判断しますか?

    3. SQLステートメントエラー:列..が存在しません

    4. MariaDBとDockerのユースケース、パート1