比方说,我有两个表外键关联TSQL插入数据
RDB_DataEntities
DataEntityId
Name
Created
Modified
...
RDB_DataInstances
DataInstanceId
DataEntityId
所以RDB_DataInstances
通过外键连接到RDB_DataEntities
在他们的DataEntityId
列。
比方说,我想将数据插入到在同一事务两个表。我对这个过程的代码如下:
using (var con = new SqlConnection("data source=speedy;initial catalog=mydb;user id=myuser;password=mypass"))
{
con.Open();
using (var tran = con.BeginTransaction())
{
SqlCommand i1 = new SqlCommand("insert into RDB_DataEntities (Name,IsSchema,Created,Modified,RequireCaptcha,UniqueByEmail,UniqueByMac) values ('hi',0,GetDate(),GetDate(),0,0,0)", con, tran);
i1.ExecuteNonQuery();
SqlCommand i2 = new SqlCommand("select SCOPE_IDENTITY() as newid", con, tran);
var id = int.Parse(i2.ExecuteScalar().ToString());
SqlCommand i3 = new SqlCommand("insert into RDB_DataInstances (DataEntityId) values (" + id + ")", con, tran);
i3.ExecuteScalar();
tran.Commit();
}
}
为什么会抛出一个外键错误
INSERT语句冲突与外键约束 “FK_RDB_DataInstances_RDB_DataEntities”。冲突发生在 数据库'NMSS_CMS',表'dbo.RDB_DataEntities', 'DataEntityId'列中。
事务不应该知道我插入的外键基于插入我只是在当前事务上下文中做的?我离开吗?
你如何做到这一点?
它没有发生在你的第一个'INSERT'上吗?也就是说,你没有设置FK的方式是错误的... – 2012-03-27 03:41:49