2013-08-27 78 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