2015-07-21 138 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刪除並重新創建了表(其中觸發器已設置),並解決了此問題。

相關問題