逐步解說:修改資料庫物件
在本逐步解說中,您將使用 Transact-SQL 編輯器修改「資料庫專案」(Database Project) 中的多個「資料庫物件」(Database Object) 定義。 這個程序包含下列步驟:
開啟包含資料庫專案的方案。
加入資料行至資料表。 客戶想要追蹤產品推出的年份。 為執行這個步驟,您會將 DateAdded 資料行加入至 Production 結構描述中的 Product 資料表。
加入 Purchasing.ShipperRating 資料表,追蹤客戶對於處理訂單的貨運公司在服務品質方面的評價。 您也會加入外部索引鍵關聯性和索引。
必要條件
本逐步解說假設您已經完成了逐步解說:將現有資料庫結構描述放入版本控制下。 在完成該逐步解說時,會產生包含 MyAdvWorks 資料庫專案的方案。
若要開啟 MyAdvWorks 方案
在 [檔案] 功能表上,指向 [開啟],再按 [專案/方案]。
[開啟專案] 對話方塊隨即出現。
開啟 MyAdvWorks 資料夾,然後按兩下 MyAdvWorks.sln。
MyAdvWorks 方案隨即開啟,並出現在 [方案總管] 中。
按一下 [檢視] 功能表上的 [資料庫結構描述檢視]。
[結構描述檢視] 隨即出現 (如果尚未出現)。 其中會顯示資料庫專案中定義的所有物件。
在 [結構描述檢視] 中展開資料庫專案節點 (如果尚未展開)。
接著修改資料庫定義,將資料行加入至資料表。
若要將 DateAdded 資料行加入至 Product 資料表
在 [結構描述檢視] 中依序展開 [Production] 資料夾和 [資料表] 資料夾,然後以滑鼠右鍵按一下 [Product] 資料表,再按一下 [開啟]。
或者,您也可以按兩下以開啟 [Product] 資料表。
Transact-SQL 編輯器隨即開啟,並顯示 Product 資料表的定義。
在 Transact-SQL 編輯器中,修改定義以加入 DateAdded 資料行,如下列範例所示:
CREATE TABLE [Production].[Product] ( [ProductID] INT IDENTITY (1, 1) NOT NULL, [Name] [dbo].[Name] NOT NULL, [ProductNumber] NVARCHAR (25) NOT NULL, [MakeFlag] [dbo].[Flag] NOT NULL, [FinishedGoodsFlag] [dbo].[Flag] NOT NULL, [Color] NVARCHAR (15) NULL, [SafetyStockLevel] SMALLINT NOT NULL, [ReorderPoint] SMALLINT NOT NULL, [StandardCost] MONEY NOT NULL, [ListPrice] MONEY NOT NULL, [Size] NVARCHAR (5) NULL, [SizeUnitMeasureCode] NCHAR (3) NULL, [WeightUnitMeasureCode] NCHAR (3) NULL, [Weight] DECIMAL (8, 2) NULL, [DaysToManufacture] INT NOT NULL, [ProductLine] NCHAR (2) NULL, [Class] NCHAR (2) NULL, [Style] NCHAR (2) NULL, [ProductSubcategoryID] INT NULL, [ProductModelID] INT NULL, [DateAdded] DATETIME NOT NULL, [SellStartDate] DATETIME NOT NULL, [SellEndDate] DATETIME NULL, [DiscontinuedDate] DATETIME NULL, [rowguid] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL, [ModifiedDate] DATETIME NOT NULL ); GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Products sold or used in the manfacturing of sold products.', @level0type = N'SCHEMA', @level0name = N'Production', @level1type = N'TABLE', @level1name = N'Product';
當您修改物件定義時,會從版本控制簽出包含該定義的檔案。
在 [檔案] 功能表上,按一下 [儲存 Product.table.sql] 儲存變更。
根據預設,檔案會自動從原始檔控制簽出。 如果您已修改原始檔控制設定,系統可能會根據版本控制設定的組態提示您簽出檔案。
接下來將名為 ShipperRating 的資料表加入資料庫專案。
若要加入 ShipperRating 資料表
在 [結構描述檢視] 中,展開 [Purchasing] 資料夾,然後按一下 [資料表] 資料夾。
按一下 [專案] 功能表上的 [加入新項目]。 您也可用滑鼠右鍵按一下 [資料表] 資料夾,指向 [加入],再按一下 [資料表]。
[加入新項目] 對話方塊隨即出現。
按一下 [樣板] 清單中的 [資料表]。
在 [名稱] 中輸入 ShipperRating,然後按一下 [ 加入]。
ShipperRating 資料表隨即加入資料庫專案和原始檔控制。 Transact-SQL 編輯器隨即出現,讓您編輯這個資料表的定義。
在 Transact-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 [Purchasing].[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]
在 [檔案] 功能表上,按一下 [儲存 ShipperRating.table.sql] 儲存變更。
接下來將外部索引鍵加入 ShipperRating 資料表。
若要將外部索引鍵加入 ShipperRating 資料表
在 [結構描述檢視] 中,以滑鼠右鍵按一下 ShipperRating 資料表,指向 [加入],然後按一下 [外部索引鍵]。
[加入新項目] 對話方塊隨即出現,並反白顯示 [外部索引鍵] 樣板。
在 [名稱] 中輸入 FK_ShipperRating_Shippers,然後按一下 [加入]。
FK_ShipperRating_Shippers 外部索引鍵隨即加入專案中的 ShipperRating 資料表。 Transact-SQL 編輯器隨即出現,讓您編輯外部索引鍵的定義。
注意事項 外部索引鍵的預設定義會參考 tablename 中的 column_1,而不是實際的資料表和資料行。 因此,FK_ShipperRating_Shippers 在 [結構描述檢視] 中的圖示會顯示錯誤圖示 (也就是包含白色 "x" 的紅色圓形)。 此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。 這是預期的行為。 在 [方案總管] 中,包含物件定義的檔案不會顯示錯誤圖示。
在 Transact-SQL 編輯器中,修改外部索引鍵定義,使其符合下列範例:
ALTER TABLE [Purchasing].[ShipperRating] ADD CONSTRAINT [FK_ShipperRating_Shippers] FOREIGN KEY ([ShipperID]) REFERENCES [Purchasing].[ShipMethod] ([ShipMethodID])
在 [檔案] 功能表上,按一下 [儲存 ShipperRating.FK_ShipperRating_Shippers.fkey.sql] 儲存變更。 由於定義這時是有效的,因此會以外部索引鍵條件約束的正常圖示來取代此錯誤圖示。
在最後一個步驟中,將索引加入 ShipperRating 資料表。
若要將索引加入 ShipperRating 資料表
在 [結構描述檢視] 中,按一下 [索引] 資料夾。
在 [專案] 功能表上,按一下 [加入新項目]。 您也可用滑鼠右鍵按一下 [索引] 資料夾,指向 [加入],然後按一下 [索引]。
按一下 [樣板] 清單中的 [索引] (若尚未反白顯示)。
在 [名稱] 中輸入 ShipperRatingDate,然後按一下 [加入]。
ShipperRatingDate 索引隨即加入專案中的 ShipperRating 資料表。 Transact-SQL 編輯器隨即出現,讓您編輯索引的定義。
注意事項 索引的預設定義會參考 column_1,而不是實際的資料行名稱。 因此,[方案總管] 中的 ShipperRatingDate 圖示會顯示錯誤圖示 (含有白色「x」的紅色圓圈)。 此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。 這是預期的行為。
在 Transact-SQL 編輯器中修改索引定義,使其符合下列範例:
-- ============================================= -- Create index on RatingDate column in --the ShipperRating table. -- ============================================= CREATE INDEX [ShipperRatingDate] ON [Purchasing].[ShipperRating] (RatingDate)
在 [檔案] 功能表上,按一下 [儲存 ShipperRating.ShipperRatingDate.index.sql] 儲存變更。 由於定義這時為有效,因此錯誤圖示會取代成正常的索引圖示。
若要將變更簽入版本控制
指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。
[暫止的變更] 視窗隨即出現,讓您檢閱已加入或修改的所有檔案。
注意事項 這個程序中的步驟是假設您使用 Team Foundation 版本控制來撰寫。 如果不是使用 Team Foundation 版本控制,則必須遵循該版本控制系統所適用的程序。
(選擇性) 指定簽入註解。
按一下 [簽入]。
資料庫專案變更現已簽入,並可供其他小組成員使用。
後續步驟
在修改這個資料庫的離線表示 (Offline Representation) 之後,您必須將這些變更建置和部署到資料庫伺服器。 若要建置和部署變更,請參閱逐步解說:將變更部署到現有的版本控制資料庫。