我试图在 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,级别 16,状态 1,第 38 行无效的列名称“名称”。
消息 207,级别 16,状态 1,第 38 行无效的列名称“描述”。
我知道该表在那里,因为我可以 SELECT * FROM Product
并获得一个包含正确列且没有错误的空结果集……由于某种原因我无法插入它。任何帮助将不胜感激!
原文由 Benjamin U. 发布,翻译遵循 CC BY-SA 4.0 许可协议
根据马丁的回答,我做了更多的研究,他是正确的。模式操作需要分批完成(我只是在删除旧表并使用不同模式创建新表后添加了一个
GO
)。更详细的答案可以在这里找到: “Invalid column name”error when calling insert after table created