私たちの会社の誰かが、Webページをサポートするために3つのビューを使用することを決定しました。これらのビューには、同一の列のサブセットが含まれている必要があります。だから私はこのような定義を持っています:
CREATE VIEW EmailReceivedView
AS
SELECT
dbo.EmailReceived.ID
, ...lots of columns
FROM dbo.EmailReceived
LEFT OUTER JOIN ...more tables
--Emails related to reviews
CREATE VIEW ReviewEmailReceivedView
AS
SELECT RV.ReviewID, V.*
FROM ReviewEmailReceived RV
INNER JOIN EmailReceivedView V ON EmailReceivedID = V.ID
--Emails related to grants
CREATE VIEW GrantEmailReceivedView
AS
SELECT GV.GrantID, V.*
FROM GrantEmailReceived GV
INNER JOIN EmailReceivedView V ON GV.EmailReceivedID = V.ID
依存ビューでV.*を実行した理由は、サポートビューが変更された場合に、依存ビューに変更を反映させたいためです。ただし、スクリプトをALTERスクリプトとして再実行しない限り、SQLServerでは発生しません。なぜだめですか?また、サポートビューへの変更が依存関係に自動的に反映されるようにする方法はありますか?