2011-09-30 55 views
1

所以我这两个语句:ASP.NET的SQL Server插入错误

  string insertUserData = "INSERT INTO W711_User_Data(Network_ID, F_Name, M_Name, L_NAME, Badge, Telephone, Org_Code, Org_Name, Req_Head_Network_ID)Values(@networkID1, @firstName1, @middleName1, @lastName1, @badgeNumber1, @telephone1, @orgCode1, @orgName1, @myUserName1)"; 


     string insertReservationData = "INSERT INTO W711_Reservation_Data(ID, Network_ID, EventTitle, StartDate, EndDate, Justification) Values(null, @networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)"; 

在第二串的网络ID与第一表格网络ID外键关系。

的问题是:当我运行在VS2010application,它给人的错误: 没有可以进行身份​​column'W711_Reservation_Data'IDENTITY_INSERT设置为OFF插入显式值。

然后我读做到这一点的地方:

SET IDENTITY_INSERT W711_Reservation_Data ON

但它也失败,再次给出了同样的错误! 请帮忙 谢谢 p.s. sql server

回答

1

如果您id是一个标识(也称为数据库自动生成的),只是不要在INSERT语句中的任何位置列出ID字段,而不是列名称而不是列表中的值:

获取SQL生成的ID以这种方式调用SCOPE_IDENTITY的服务器:

INSERT INTO W711_Reservation_Data(Network_ID, EventTitle, StartDate, EndDate, Justification) Values(@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)"; 

RETURN SCOPE_IDENTITY() 

编辑:这是你的两条语句中的第二条,我已经删除了ID和NULL ...

+0

非常感谢这么多队友......这实际上工作!是的,ID是使用identity(1,1)生成的。我曾经在mysql项目中执行null技术,它工作。再次感谢! –

1

为什么你试图插入null作为ID列的值呢?假设这是IDENTITY列,它是投诉的来源则似乎更容易,你只是需要离开它的列列表和不传递任何明确的价值。即

INSERT INTO W711_Reservation_Data 
    (Network_ID, EventTitle, StartDate, EndDate, Justification) 
Values 
    (@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1) 
+0

对不起,不好的练习习惯从MySQL有时候..现在工作谢谢 –

1

可能有两种可能性。

1] 如果第一个表中的Network_ID是主键自动生成,则 将数据插入到第一个表中。 然后从该表中获得最新的网络ID,并且 将该网络ID与第二查询一起传递。

2]。 如果第二个表中的ID列是主键,则 不要在第二个查询中传递null。 可以自动生成或在查询中传递唯一值。