ビューをスキーマバインドする目的は、ビューで参照されるベーステーブルを、ビュー定義に影響を与えるような方法で変更できないようにすることです。
これは通常、良いことです。結局のところ、誰かがやって来て、あなたの見方が依存しているテーブルを落としてほしくないのですよね?
しかし、ビューによって参照される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を変更するだけでした ALTER 、WITH 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構文を使用しました。これにより、ビューが存在しない場合にエラーが発生するのを防ぎます。