将记录插入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
答案 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丢弃并重新创建了表(其上设置了触发器),这解决了这个问题。