我试图删除并使用SQL Server中的新架构重新创建表,然后在其中插入一些测试数据以验证其是否正常工作。我有以下DDL:
CREATE TABLE [dbo].[Product](
[ID] int IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(100) NOT NULL,
[Description] VARCHAR(200) NULL,
[Modified] DATETIME NOT NULL DEFAULT(GETUTCDATE()),
[ModifiedBy] VARCHAR(32) NOT NULL
);
和以下插入语句:
INSERT INTO [dbo].[Product]([Name], [Description], [Modified], [ModifiedBy])
VALUES('Test', 'Description', GETUTCDATE(), 'Me');
每当我尝试插入上述行时,都会出现错误:
第207层,状态1,第38行, 无效的列名“名称”。
第207层,状态1,第38行, 无效的列名称“说明”。
我知道该表在那里,因为我可以SELECT * FROM Product
并获得一个包含正确列且没有错误的空结果集……由于某种原因,我无法插入该表。任何帮助将不胜感激!
答案 0 :(得分:1)
按照马丁的回答,我做了更多的研究,他是正确的。模式操作需要分批完成(在删除旧表并使用其他模式创建新表之后,我只是添加了GO
)。可以在这里找到更详细的答案:"Invalid column name" error when calling insert after table created
答案 1 :(得分:0)
对我来说,您的查询看起来不错,并且我测试成功。
尝试添加架构名称,并将所有列名称放在方括号中:
CREATE TABLE [dbo].[Product](
[ID] int IDENTITY(1,1) PRIMARY KEY,
[Name] VARCHAR(100) NOT NULL,
[Description] VARCHAR(200) NULL,
[Modified] DATETIME NOT NULL DEFAULT(GETUTCDATE()),
[ModifiedBy] VARCHAR(32) NOT NULL
);
INSERT INTO [dbo].[Product]([Name], [Description], [Modified], [ModifiedBy])
VALUES('Test', 'Description', GETUTCDATE(), 'Me');
答案 2 :(得分:-1)
也许尝试刷新缓存。简单的方法是按Ctrl + shift + R
或
Edit > IntelliSense > Refresh Local Cache
如果不起作用,则使用限定名称[dbo] .table或username.tablename等
答案 3 :(得分:-1)
不要做任何事情,只是尝试插入 (' ') 单引号而不是 (") 引号.. 或者如果您插入带有 ('') 单引号的数据,请尝试插入 (") 双引号,这确实对您有所帮助。