比方說,我有兩個表外鍵關聯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