如果已成功插入到第一个表中,则将数据插入到第二个表中;t插入数据
本文关键字:插入 数据 第二个 成功 如果 第一个 | 更新日期: 2023-09-27 17:58:22
我在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");
}
您可以在SQLite中使用触发器。https://www.sqlite.org/lang_createtrigger.html
你可以很容易地在谷歌上搜索它。。我做到了,下面是在谷歌给出的第一个链接中找到的代码的一部分。
请注意,下面只是一个例子,下面是完整的答案,你必须阅读附件,可能还有几篇关于数据库中事务的文章。。。。
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();
}
}