2013-08-27 58 views
0

我正在閱讀初學者ASP.NET MVC 4我必須使用T-SQL創建一些表。一切工作正常,到目前爲止,但是當我試圖在T-SQL編輯器來複制這個(在Visual Studio 2012)使用T-SQL創建Tabels

ALTER TABLE [dbo].[UserProfile] 
ADD 
[FirstName] VARCHAR(150) NOT NULL, 
[LastName] VARCHAR(150) NOT NULL, 
[Email] VARCHAR(150) NOT NULL; 

的錯誤是:

在這種情況下,你必須通過使用CREATE TABLE而不是通過使用ALTER TABLE語句

在其他表指定我有以下代碼專欄:

... 
REFERENCES **[UserProfile]** ([UserId]) 
... 

但書中沒有[UserProfile]表。
有人可以幫我這個ALTER TABLE

+0

關懷每一個人列你從哪裏得到該錯誤消息?我知道在SQL Server中沒有這樣的錯誤消息...? – RBarryYoung

回答

1

ALTER TABLE只有當該表存在於數據庫中時纔有效。

如果你說沒有用戶配置表,那麼你應該創建它:

CREATE TABLE [dbo].[UserProfile] (
    [FirstName] VARCHAR(150) NOT NULL, 
    [LastName] VARCHAR(150) NOT NULL, 
    [Email] VARCHAR(150) NOT NULL 
) 
+0

好吧,但正如我所說的,在其他表中是REFERENCES [UserProfile] ([UserId]),這意味着UserProfile表包含一個列調用UserId,書不說... – user2649344

+0

您可以添加** UserId **列你自己。這裏沒有「祕密的東西」。我的客人是這本書有一個錯字。 –

+0

問題解決了。謝謝你的回答 – user2649344

0

的[用戶ID]列應ALTER TABLE之前創建。這裏Alter Table只是添加[FirstName],[LastName]和[Email]列。

0

首先檢查表是否存在,如果沒有創建。

IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE [object_id] = OBJECT_ID(N'dbo.UserProfile', N'U')) 
BEGIN 
    CREATE TABLE [dbo].[UserProfile] (
      [FirstName] VARCHAR(150) NOT NULL, 
      [LastName] VARCHAR(150) NOT NULL, 
      [Email] VARCHAR(150) NOT NULL 
     ) 
END 

然後檢查你需要的存在,並利用這些

IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE [name] = 'FirstName' AND [object_id] = OBJECT_ID(N'dbo.UserProfile', N'U')) 
BEGIN 
    ALTER TABLE dbo.UserProfile 
     ADD [FirstName] VARCHAR(150) NOT NULL 
END 

IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE [name] = 'LastName' AND [object_id] = OBJECT_ID(N'dbo.UserProfile', N'U')) 
BEGIN 
    ALTER TABLE dbo.UserProfile 
     ADD LastName VARCHAR(150) NOT NULL 
END 

IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE [name] = 'Email' AND [object_id] = OBJECT_ID(N'dbo.UserProfile', N'U')) 
BEGIN 
    ALTER TABLE dbo.UserProfile 
     ADD Email VARCHAR(150) NOT NULL 
END