我在 Sqlite 中有两个表我希望如果用户将数据插入第一个表然后将特定数据插入第二个表但是如果第一个表上的插入成功而第二个表上的插入失败则数据插入第一个表必须删除,如何在c#中使用sqlite进行管理? 我的意思是在sqlite或sql中有什么办法来管理这个? 这是我在c#中使用的代码:
queryString = string.Format(@"insert into customerHost values('{0}','{1}','{2}','{3}','{4}','{5}')",
"1", userID, hostPlan, hostServiceDate, hostExpiresOn ,hostPrice);
if (new dataAccess().insertQuery(queryString) == 1)// if data has been inserted into the first table successfully then insert into the second one
{
MessageBox.Show("good", "good");
queryString = String.Format(@"insert into hostUpdate values('{0}','{1}','{2}','{3}')",
Guid.NewGuid().ToString(), userID, hostServiceDate, hostExpiresOn);
if (new dataAccess().insertQuery(queryString) != 1)//if data insertion into the second table failed then throw an errro....in fact data inserted into the first table must be removed
MessageBox.Show("some errors has been occured ", "error");
}
答案 0 :(得分:-1)
您可以在SQLite中使用触发器。 https://www.sqlite.org/lang_createtrigger.html
答案 1 :(得分:-1)
你可以轻松地谷歌...我做了以下是谷歌给出的first link中找到的代码的一部分。
请注意,下面只是一个示例,下面是完整的答案,您必须阅读附件,可能还有更多关于数据库中交易的文章....
string cs = "URI=file:test.db";
using (SqliteConnection con = new SqliteConnection(cs))
{
con.Open();
using(SqliteTransaction tr = con.BeginTransaction())
{
using (SqliteCommand cmd = con.CreateCommand())
{
cmd.Transaction = tr;
cmd.CommandText = "DROP TABLE IF EXISTS Friends";
cmd.ExecuteNonQuery();
...............
}
tr.Commit();
}
con.Close();
}
}