逐步解說:修改資料庫物件

在本逐步解說中,您將使用 Transact-SQL 編輯器修改「資料庫專案」(Database Project) 中的多個「資料庫物件」(Database Object) 定義。 這個程序包含下列步驟:

  • 開啟包含資料庫專案的方案。

  • 加入資料行至資料表。 客戶想要追蹤產品推出的年份。 為執行這個步驟,您會將 DateAdded 資料行加入至 Production 結構描述中的 Product 資料表。

  • 加入 Purchasing.ShipperRating 資料表,追蹤客戶對於處理訂單的貨運公司在服務品質方面的評價。 您也會加入外部索引鍵關聯性和索引。

必要條件

本逐步解說假設您已經完成了逐步解說:將現有資料庫結構描述放入版本控制下。 在完成該逐步解說時,會產生包含 MyAdvWorks 資料庫專案的方案。

若要開啟 MyAdvWorks 方案

  1. 在 [檔案] 功能表上,指向 [開啟],再按 [專案/方案]。

    [開啟專案] 對話方塊隨即出現。

  2. 開啟 MyAdvWorks 資料夾,然後按兩下 MyAdvWorks.sln。

    MyAdvWorks 方案隨即開啟,並出現在 [方案總管] 中。

  3. 按一下 [檢視] 功能表上的 [資料庫結構描述檢視]。

    [結構描述檢視] 隨即出現 (如果尚未出現)。 其中會顯示資料庫專案中定義的所有物件。

  4. 在 [結構描述檢視] 中展開資料庫專案節點 (如果尚未展開)。

    接著修改資料庫定義,將資料行加入至資料表。

若要將 DateAdded 資料行加入至 Product 資料表

  1. 在 [結構描述檢視] 中依序展開 [Production] 資料夾和 [資料表] 資料夾,然後以滑鼠右鍵按一下 [Product] 資料表,再按一下 [開啟]。

    或者,您也可以按兩下以開啟 [Product] 資料表。

    Transact-SQL 編輯器隨即開啟,並顯示 Product 資料表的定義。

  2. 在 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';
    

    當您修改物件定義時,會從版本控制簽出包含該定義的檔案。

  3. 在 [檔案] 功能表上,按一下 [儲存 Product.table.sql] 儲存變更。

    根據預設,檔案會自動從原始檔控制簽出。 如果您已修改原始檔控制設定,系統可能會根據版本控制設定的組態提示您簽出檔案。

    接下來將名為 ShipperRating 的資料表加入資料庫專案。

若要加入 ShipperRating 資料表

  1. 在 [結構描述檢視] 中,展開 [Purchasing] 資料夾,然後按一下 [資料表] 資料夾。

  2. 按一下 [專案] 功能表上的 [加入新項目]。 您也可用滑鼠右鍵按一下 [資料表] 資料夾,指向 [加入],再按一下 [資料表]。

    [加入新項目] 對話方塊隨即出現。

  3. 按一下 [樣板] 清單中的 [資料表]。

  4. 在 [名稱] 中輸入 ShipperRating,然後按一下 [ 加入]。

    ShipperRating 資料表隨即加入資料庫專案和原始檔控制。 Transact-SQL 編輯器隨即出現,讓您編輯這個資料表的定義。

  5. 在 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]
    
  6. 在 [檔案] 功能表上,按一下 [儲存 ShipperRating.table.sql] 儲存變更。

    接下來將外部索引鍵加入 ShipperRating 資料表。

若要將外部索引鍵加入 ShipperRating 資料表

  1. 在 [結構描述檢視] 中,以滑鼠右鍵按一下 ShipperRating 資料表,指向 [加入],然後按一下 [外部索引鍵]。

    [加入新項目] 對話方塊隨即出現,並反白顯示 [外部索引鍵] 樣板。

  2. 在 [名稱] 中輸入 FK_ShipperRating_Shippers,然後按一下 [加入]。

    FK_ShipperRating_Shippers 外部索引鍵隨即加入專案中的 ShipperRating 資料表。 Transact-SQL 編輯器隨即出現,讓您編輯外部索引鍵的定義。

    注意事項注意事項

    外部索引鍵的預設定義會參考 tablename 中的 column_1,而不是實際的資料表和資料行。 因此,FK_ShipperRating_Shippers 在 [結構描述檢視] 中的圖示會顯示錯誤圖示 (也就是包含白色 "x" 的紅色圓形)。 此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。 這是預期的行為。 在 [方案總管] 中,包含物件定義的檔案不會顯示錯誤圖示。

  3. 在 Transact-SQL 編輯器中,修改外部索引鍵定義,使其符合下列範例:

    ALTER TABLE [Purchasing].[ShipperRating]
    ADD CONSTRAINT [FK_ShipperRating_Shippers] 
    FOREIGN KEY ([ShipperID])
    REFERENCES [Purchasing].[ShipMethod] ([ShipMethodID])
    
  4. 在 [檔案] 功能表上,按一下 [儲存 ShipperRating.FK_ShipperRating_Shippers.fkey.sql] 儲存變更。 由於定義這時是有效的,因此會以外部索引鍵條件約束的正常圖示來取代此錯誤圖示。

    在最後一個步驟中,將索引加入 ShipperRating 資料表。

若要將索引加入 ShipperRating 資料表

  1. 在 [結構描述檢視] 中,按一下 [索引] 資料夾。

  2. 在 [專案] 功能表上,按一下 [加入新項目]。 您也可用滑鼠右鍵按一下 [索引] 資料夾,指向 [加入],然後按一下 [索引]。

  3. 按一下 [樣板] 清單中的 [索引] (若尚未反白顯示)。

  4. 在 [名稱] 中輸入 ShipperRatingDate,然後按一下 [加入]。

    ShipperRatingDate 索引隨即加入專案中的 ShipperRating 資料表。 Transact-SQL 編輯器隨即出現,讓您編輯索引的定義。

    注意事項注意事項

    索引的預設定義會參考 column_1,而不是實際的資料行名稱。 因此,[方案總管] 中的 ShipperRatingDate 圖示會顯示錯誤圖示 (含有白色「x」的紅色圓圈)。 此外,[錯誤清單] 視窗也會顯示錯誤,指出有無效的資料庫物件定義。 這是預期的行為。

  5. 在 Transact-SQL 編輯器中修改索引定義,使其符合下列範例:

    -- =============================================
    -- Create index on RatingDate column in 
    --the ShipperRating table.
    -- =============================================
    CREATE INDEX [ShipperRatingDate]
    ON [Purchasing].[ShipperRating]
    (RatingDate)
    

    在 [檔案] 功能表上,按一下 [儲存 ShipperRating.ShipperRatingDate.index.sql] 儲存變更。 由於定義這時為有效,因此錯誤圖示會取代成正常的索引圖示。

若要將變更簽入版本控制

  1. 指向 [檢視] 功能表上的 [其他視窗],然後按一下 [暫止的變更]。

    [暫止的變更] 視窗隨即出現,讓您檢閱已加入或修改的所有檔案。

    注意事項注意事項

    這個程序中的步驟是假設您使用 Team Foundation 版本控制來撰寫。 如果不是使用 Team Foundation 版本控制,則必須遵循該版本控制系統所適用的程序。

  2. (選擇性) 指定簽入註解。

  3. 按一下 [簽入]。

    資料庫專案變更現已簽入,並可供其他小組成員使用。

後續步驟

在修改這個資料庫的離線表示 (Offline Representation) 之後,您必須將這些變更建置和部署到資料庫伺服器。 若要建置和部署變更,請參閱逐步解說:將變更部署到現有的版本控制資料庫

請參閱

工作

逐步解說:將現有資料庫結構描述放入版本控制下

逐步解說:建立及部署新版本控制的資料庫

概念

撰寫和變更資料庫程式碼

建置和部署資料庫到隔離的開發環境

重構資料庫程式碼和資料