使用T-SQL创建表

时间:2013-08-27 09:07:31

标签: sql-server database tsql

我正在阅读初学者ASP.NET MVC 4 ,我必须使用T-SQL创建一些表。到目前为止一切正常,但是当我试图在T-SQL编辑器中复制它时(在Visual Studio 2012中)

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吗?

4 个答案:

答案 0 :(得分:1)

只有当数据库中存在该表时,

ALTER TABLE才会起作用。

如果您说没有 UserProfile 表格,那么您应该创建它:

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

答案 1 :(得分:0)

应在ALTER TABLE之前创建[UserId]列。在这里,Alter Table只是添加[FirstName],[LastName]和[Email]列。

答案 2 :(得分: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

答案 3 :(得分:0)

如果在Visual Studio中看到此消息,请确保您的脚本文件未包含在Build中,右键单击.sql文件并查看属性,将“ Build Action”设置为none。那将消除错误。此错误破坏了Jenkins的构建,此解决方案为我解决了该问题。