SQL Server CE插入表似乎没有增加标识

时间:2014-08-19 13:40:17

标签: c# sql visual-studio-2012 sql-server-ce-4

我有一个像这样定义的表:

CREATE TABLE ItemCategory
(
    ID INT IDENTITY NOT NULL PRIMARY KEY,
    CategoryID INT NOT NULL,
    ItemID INT NOT NULL
);

此表链接到两个外键上的两个表。

我有这个SQL语句

INSERT INTO ItemCategory (CategoryID, ItemID) 
VALUES (@category, @item)

参数设置如下:

var p1 = new SqlCeParameter("@category", SqlDbType.Int);
var p2 = new SqlCeParameter("@item", SqlDbType.Int);
p1.Value = categoryID;
p2.Value = itemID;

参数的值是正确的(我已经调试和检查过)因此不应该有任何外键错误。

当我执行SQL语句时,我收到以下错误:

  

该列不能包含空值。 [列名= ID,表名= ItemCategory] ​​

但是我不理解这一点,因为ID列设置为Identity列,因此我不需要提供值,它应该自动增加。

为什么会这样?

  • C#
  • SQL Server Compact Edition 4.0
  • Visual Studio 2012

1 个答案:

答案 0 :(得分:1)

尝试添加IDENTITY (1,1)

 [Id] int NOT NULL  IDENTITY (1,1)