我正在阅读初学者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
吗?
答案 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的构建,此解决方案为我解决了该问题。