SQL Server无效的列名称错误

时间:2015-07-21 21:43:37

标签: sql-server

将记录插入SQL Server表时出现无效的列名错误。以下是定义:

CREATE TABLE [dbo].[myTable] 
(
    [id] int IDENTITY(1, 1) NOT NULL,
    [person_name] varchar(255) NOT NULL,
    [modified_By] varchar(255) NOT NULL
)
ON [PRIMARY] WITH (DATA_COMPRESSION = NONE);
GO

并插入

INSERT INTO myDB.dbo.myTable (id, person_name, modified_By) 
VALUES (1, 'Aishwarya', 'admin')

但是我在执行时遇到以下错误:

  

查找错误 - SQL Server数据库错误:列名无效   ' modified_BY'

我可以从列中SELECT罚款。我唯一错误地注意到的是" BY"与表定义相反,是大写的。有什么想法吗?

更新:更新所有语法错误,apologeez

3 个答案:

答案 0 :(得分:1)

您的数据库是否设置为区分大小写的排序规则?您可以通过运行此查询进行检查:

SELECT DATABASEPROPERTYEX('<Insert Database Name>', 'Collation') SQLCollation;

不区分大小写的排序规则通常在名称中包含CI,例如SQL_Latin1_General_CP1_CI_AS

区分大小写的排序规则可能类似于Latin1_General_BIN

如果数据库具有区分大小写的排序规则,则T-SQL中的大小写必须与列定义匹配。

此处的帖子并未在insert语句中包含modified_BY大小写,因此请仔细检查。如果它在那里正确地大写,那么检查表上是否有任何可能具有不正确拼写的触发器。

答案 1 :(得分:0)

在INSERT语句中,不为IDENTITY列“Id”提供值。它应该看起来像:

INSERT INTO myDB.dbo.myTable
(person_name, modified_By) 
VALUES ('Aishwarya', 'admin')

答案 2 :(得分:0)

不是任何人都想听到的答案,但是我们的DBA丢弃并重新创建了表(其上设置了触发器),这解决了这个问题。