逐步解說:修改資料庫物件
更新:2007 年 11 月
在本逐步解說中,您將使用 Transact-SQL (T-SQL) 編輯器修改「資料庫專案」(Database Project) 中的多個「資料庫物件」(Database Object) 定義。這個程序包含下列步驟:
開啟包含資料庫專案的方案。
加入資料行至資料表。客戶想要追蹤產品推出的年份。為執行這個步驟,您會將 DateAdded 資料行加入至 Products 資料表。
加入 ShipperRating 資料表,追蹤客戶對於處理訂單的貨運公司在服務品質方面的評價。您也會加入外部索引鍵關聯性和索引。
必要條件
本逐步解說假設您已經完成了逐步解說:將現有資料庫結構描述放入版本控制下。在完成該逐步解說時,會產生包含 MyNorthwind 資料庫專案的方案。
若要開啟 MyNorthwind 方案
在 [檔案] 功能表上,指向 [開啟],再按 [專案/方案]。
[開啟專案] 對話方塊隨即出現。
開啟 MyNorthwind 資料夾,然後按兩下 MyNorthwind.sln。
MyNorthwind 方案隨即開啟,並出現在 [方案總管] 中。
按一下 [檢視] 功能表上的 [結構描述檢視]。
[結構描述檢視] 隨即出現 (如果尚未出現)。其中會顯示資料庫專案中定義的所有物件。
在 [結構描述檢視] 中展開資料庫專案節點 (如果尚未展開)。
接著修改資料庫定義,將資料行加入至資料表。
若要加入 DateAdded 資料行至 Products 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 Products 資料表,然後按一下 [開啟]。您也可以按兩下 [Products] 資料表。
T-SQL 編輯器隨即開啟,並顯示 Products 資料表的定義。
在 T-SQL 編輯器中,修改定義以加入 DateAdded 資料行,如下列範例所示:
CREATE TABLE [dbo].[Products] ( [ProductID] [int] NOT NULL IDENTITY(1, 1), [ProductName] [nvarchar] (40) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, [SupplierID] [int] NULL, [CategoryID] [int] NULL, [QuantityPerUnit] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CS_AS NULL, [UnitPrice] [money] NULL CONSTRAINT [DF_Products_UnitPrice] DEFAULT (0), [UnitsInStock] [smallint] NULL CONSTRAINT [DF_Products_UnitsInStock] DEFAULT (0), [UnitsOnOrder] [smallint] NULL CONSTRAINT [DF_Products_UnitsOnOrder] DEFAULT (0), [ReorderLevel] [smallint] NULL CONSTRAINT [DF_Products_ReorderLevel] DEFAULT (0), [Discontinued] [bit] NOT NULL CONSTRAINT [DF_Products_Discontinued] DEFAULT (0), [DateAdded] [datetime] NULL ) ON [PRIMARY]
在 [檔案] 功能表上,按一下 [儲存 dbo.Products] 儲存變更。
根據預設,檔案會自動從原始檔控制簽出。如果修改了原始檔控制設定,您會看到簽出檔案的提示。
接下來將名為 ShipperRating 的資料表加入資料庫專案。
若要加入 ShipperRating 資料表
在 [結構描述檢視] 中,按一下 [資料表] 資料夾。
在 [專案] 功能表上,按一下 [加入新項目]。您也可用滑鼠右鍵按一下 [資料表] 資料夾,指向 [加入],再按一下 [資料表]。
[加入新項目] 對話方塊隨即出現。
按一下 [樣板] 清單中的 [資料表]。
在 [名稱] 中輸入 ShipperRating,然後按一下 [ 加入]。
ShipperRating 資料表隨即加入資料庫專案和原始檔控制。T-SQL 編輯器會出現,讓您編輯這個資料表的定義。
在 T-SQL 編輯器中,修改資料表定義,使其符合下列範例:
-- ============================================= -- Create table definition for ShipperRating --Contains a rating of a shipper by --a customer, on a particular date. --Ratings are from 1-100. -- ============================================= CREATE TABLE [dbo].[ShipperRating] ( [ShipperID] [int] NOT NULL, [CustomerID] [nchar] (5) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL, [RatingDate] [datetime] NULL, [Rating] [int] NOT NULL ) ON [PRIMARY]
在 [檔案] 功能表上,按一下 [儲存 dbo.ShipperRating] 儲存變更。
接下來將外部索引鍵加入 ShipperRating 資料表。
若要將外部索引鍵加入 ShipperRating 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 ShipperRating 資料表,指向 [加入],然後按一下 [外部索引鍵]。
[加入新項目] 對話方塊隨即出現,並反白顯示 [外部索引鍵] 樣板。
在 [名稱] 中輸入 FK_ShipperRating_Shippers,然後按一下 [加入]。
FK_ShipperRating_Shippers 外部索引鍵隨即加入專案中的 ShipperRating 資料表。T-SQL 編輯器會出現,讓您編輯外部索引鍵的定義。
注意事項: 外部索引鍵的預設定義會參考 tablename 中的 column_1,而不是實際的資料表和資料行。因此,FK_ShipperRating_Shippers 在 [結構描述檢視] 中的圖示會顯示錯誤圖示 (也就是包含白色 "x" 的紅色圓形)。此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。這是預期的行為。在 [方案總管] 中,包含物件定義的檔案不會顯示錯誤圖示。
在 T-SQL 編輯器中,修改外部索引鍵定義,使其符合下列範例:
ALTER TABLE [dbo].[ShipperRating] ADD CONSTRAINT [FK_ShipperRating_Shippers] FOREIGN KEY ([ShipperID]) REFERENCES [dbo].[Shippers] ([ShipperID])
在 [檔案] 功能表上,按一下 [儲存 dbo.FK_ShipperRating_Shippers] 儲存變更。由於定義這時是有效的,因此會以外部索引鍵條件約束的正常圖示來取代此錯誤圖示。
在最後一個步驟中,將索引加入 ShipperRating 資料表。
若要將索引加入 ShipperRating 資料表
在 [結構描述檢視] 中,按一下 [索引] 資料夾。
在 [專案] 功能表上,按一下 [加入新項目]。您也可用滑鼠右鍵按一下 [索引] 資料夾,指向 [加入],然後按一下 [索引]。
按一下 [樣板] 清單中的 [索引] (若尚未反白顯示)。
在 [名稱] 中輸入 ShipperRatingDate,然後按一下 [加入]。
ShipperRatingDate 索引隨即加入專案中的 ShipperRating 資料表。T-SQL 編輯器會出現,讓您編輯索引的定義。
注意事項: 索引的預設定義會參考 column_1,而不是實際的資料行名稱。因此,[方案總管] 中的 ShipperRatingDate 圖示會顯示錯誤圖示 (含有白色「x」的紅色圓圈)。此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。這是預期的行為。
在 T-SQL 編輯器中,修改索引定義,使其符合下列範例:
-- ============================================= -- Create index on RatingDate column in --the ShipperRating table. -- ============================================= CREATE INDEX [ShipperRatingDate] ON [dbo].[ShipperRating] (RatingDate)
在 [檔案] 功能表上,按一下 [儲存 ShipperRatingDate] 儲存變更。由於定義這時為有效,因此錯誤圖示會取代成正常的索引圖示。
若要將變更簽入版本控制
在 [方案總管] 中,按一下 [MyNorthwind] 資料庫。
指向 [檔案] 功能表上的 [原始檔控制],然後按一下 [簽入]。
依照原始檔控制外掛程式的程序簽入檔案。如需詳細資訊,請參閱使用 Team Foundation 版本控制。
資料庫專案變更現已簽入,並可供其他小組成員使用。
後續步驟
在修改這個資料庫的離線表示 (Offline Representation) 之後,您必須將這些變更建置和部署到資料庫伺服器。若要建置和部署變更,請參閱逐步解說:將變更部署到現有的版本控制資料庫。