0

我在Visual Studio 2015數據庫項目,我想命名的主鍵,但它似乎忽略任何嘗試。命名默認約束雖然行得通。VS數據庫項目主鍵名

CREATE TABLE [dbo].[Stock] 
(
    [Id] INT CONSTRAINT [PK_Stock_Id] NOT NULL PRIMARY KEY, 
    [StockCode] NVARCHAR(6) NOT NULL, 
    [CreatedDate] DATETIME2 CONSTRAINT [DF_Stock_CreatedDate] DEFAULT sysutcdatetime() NOT NULL 
) 
GO 

如果你點擊主鍵,它甚至有一個名稱屬性,但它是隻讀的。我知道它創建的只是腳本而不是發佈到SQL Server,它會去掉主鍵上的單詞約束和名稱。

回答

0

這會爲你工作:

CREATE TABLE [dbo].[Stock] 
(
[Id] INT NOT NULL, 
[StockCode] NVARCHAR(6) NOT NULL, 
[CreatedDate] DATETIME2 NOT NULL 
) 
GO 

ALTER TABLE dbo.Stock ADD CONSTRAINT 
DF_Stock_CreatedDate DEFAULT GETDATE() FOR CreatedDate 
GO 

ALTER TABLE dbo.Stock ADD CONSTRAINT 
PK_Stock_Id PRIMARY KEY CLUSTERED 
(
Id 
) 
GO 
+0

感謝,沒想到做這件事作爲單獨的步驟,但認爲有可能是在在線解決方案很好。 Visual Studio確實會正確地選取那一點腳本,並在界面中顯示主鍵的名稱。我不認爲有必要改變我所擁有的默認約束。 – DasDave

+0

PK和FK約束定義在執行內聯時位於所有列定義之後。如果你不加入它並使用GUI添加一個PK,它會放入一個非命名的PK約束。如果你想要一個名字(你真的應該有),你必須編輯SQL來使用CONSTRAINT pk_name PRIMARY KEY語法來添加名稱。 –