如果已成功插入到第一个表中,则将数据插入到第二个表中;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");
            }

如果已成功插入到第一个表中,则将数据插入到第二个表中;t插入数据

您可以在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();
    }
}