2014-01-16 108 views
0

我有這種說法,想知道如何使「唯一索引視圖」聚集索引視圖

ALTER VIEW vwCF 
as 
SELECT 
cf.CashFlowID 
,ftt.FTSName 
,cf.FTSTypeID 
,ftt.SortOrder AS ftsSortOrder 
,cf.SecurityTypeID 
,st.SecurityTypeName 
,st.SortOrder AS stSortOrder 
,cf.IssuanceDate 
,cf.Issuance 
,cf.Principal 
,cf.Interest 
,cf.FlowAmounts 
,cf.Net 
FROM dbo.CashFlow AS cf 
INNER JOIN dbo.FinancialTimesType AS ftt ON cf.FTSTypeID = ftt.FTSTypeID 
INNER JOIN dbo.SecurityType AS st ON cf.SecurityTypeID = st.SecurityTypeID 
Go 

如何做好創建唯一索引視圖,何去何從?謝謝

+0

如果DB是SQL SERVER檢查[這](http://stackoverflow.com/questions/8506487/cannot-create-index-on-view -view-table-name-because-the-view-is-not-schema-bou)和[this](http://stackoverflow.com/questions/9199418/sql-server-indexed-views)。 – user2989408

回答

0

假設這是sql server,你可以使用下面的代碼。您需要將底部的[ID字段]替換爲您要使用的字段。

DROP VIEW vwCF 
GO 
CREATE VIEW vwCF WITH SCHEMABINDING 
AS 
cf.CashFlowID 
,ftt.FTSName 
,cf.FTSTypeID 
,ftt.SortOrder AS ftsSortOrder 
,cf.SecurityTypeID 
,st.SecurityTypeName 
,st.SortOrder AS stSortOrder 
,cf.IssuanceDate 
,cf.Issuance 
,cf.Principal 
,cf.Interest 
,cf.FlowAmounts 
,cf.Net 
FROM dbo.CashFlow AS cf 
INNER JOIN dbo.FinancialTimesType AS ftt 
    ON cf.FTSTypeID = ftt.FTSTypeID 
INNER JOIN dbo.SecurityType AS st 
    ON cf.SecurityTypeID = st.SecurityTypeID; 
CREATE UNIQUE CLUSTERED INDEX idx_vwCf ON vwCF ([id field]); 

[更多關於索引視圖]:http://msdn.microsoft.com/en-us/library/ms191432.aspx

+0

獲取兩個錯誤:消息111,級別15,狀態1,行2 'CREATE VIEW'必須是查詢批處理中的第一條語句。 消息319,級別15,狀態1,行2 關鍵字'with'附近的語法不正確。如果這個陳述是一個共同的表格表達......等等。 – user3018092

+0

我在Drop View後忘記了「GO」語句。我編輯了我的答案。 – RubberDuck

+0

如果這解決了您的問題,請標記爲正確的答案。 – RubberDuck