2015-07-21 135 views
0

将记录插入到我的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') 

但我在执行时出现以下错误:

Lookup Error - SQL Server Database Error: Invalid column name 'modified_BY'.

我可以SELECT从列罚款。我唯一注意到的错误是“BY”是大写,与表定义相反。有任何想法吗?

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

+0

在'person_name'之后缺少']'并且在'modified_by'之后' –

+0

抱歉,将更新 –

+0

缺失)这应该关闭创建表 –

回答

0

在INSERT语句中不提供身份列“ID”提供一个值。它应该如下所示:

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

果然,但不应该显示OP宣称拥有的错误消息。 – jpw

+0

你说得对。但我猜这将是他/她将遇到的下一个错误:) – JohnS

1

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

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

不区分大小写的排序规则通常有CI的名称,如SQL_Latin1_General_CP1_CI_AS

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

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

您的帖子在插入语句中不包含modified_BY大写字母,所以仔细检查一下。如果它的大写正确,那么检查桌面上是否有触发器可能存在拼写错误。

+0

矿井数据库返回Latin1_General_CI_AS - 尚未搜索,但我猜这是不区分大小写? –

+0

这也是在我的'modified_By'列上定义的 –

+0

错误消息有不同大小写的事实是可疑的。桌子上有触发器吗? –

0

没有人愿意听到的答案,但是我们的DBA删除并重新创建了表(其中触发器已设置),并解决了此问题。

相关问题