常用SQL语句总结(3)
来源:互联网 发布:大数据分析师招聘 编辑:程序博客网 时间:2024/05/16 03:06
获取自增主键Id并实现事务
- 表A为用户信息表,表B为日志表,每当A插入一条信息时B都要插入一条日志,在写日志的时候需要把刚刚插入A表的那条数据的自增主键Id也写到日志中,以识别该日志对应A表哪条信息。
- 重点来了,要想把刚刚插入A表的那条数据的自增主键Id写到B表中,首先要获取这条数据的自增主键Id。
- 由于向A、B中插入数据具有关联性,必须都插入或都不插入,如果有一项插入失败就会造成数据缺失,为避免部分Sql执行失败的情况发生,可以使用事务来处理,把向A、B中插入数据作为一个整体,如果在这个整体执行过程中有Sql语句执行失败的情况则回滚到Sql执行之前的状态,这样就避免了数据缺失是情况,同时也不会对原数据造成影响。
protected void btnIdentityId_Click(object sender, EventArgs e){ List<string> sqlCommandList = new List<string>(); StringBuilder sqlStringBuilder = new StringBuilder(); sqlStringBuilder.AppendFormat("insert into UserInfo values('2016001','蝈蝈',getdate(),'男')"); //获取刚插入到UserInfo表的那条信息的自增Id sqlStringBuilder.AppendFormat("declare {0} int;set {1}=SCOPE_IDENTITY();", "@UserIdentityId", "@UserIdentityId"); //通过变量名使用刚插入到UserInfo表的那条信息的自增Id sqlStringBuilder.AppendFormat("insert into Descriptions values({0},{1},getdate())", "@UserIdentityId", "获取自增Id添加描述"); sqlCommandList.Add(sqlStringBuilder.ToString()); ExecuteSqlTran(sqlCommandList);}/// <summary>/// 执行多条SQL语句,实现数据库事务。/// </summary>/// <param name="SQLStringList">多条SQL语句</param> public static int ExecuteSqlTran(List<String> SQLStringList){ using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; SqlTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { int count = 0; for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n]; if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; count += cmd.ExecuteNonQuery(); } } tx.Commit(); return count; } catch { tx.Rollback(); return 0; } }}
1 0
- 常用SQL语句总结(3)
- SQL常用语句总结
- SQL常用语句总结
- sql常用语句总结
- SQL常用语句总结
- 常用SQL语句总结
- 常用SQL语句总结
- 常用SQL语句总结
- SQL常用语句总结
- 常用SQL语句总结
- SQL常用语句总结
- 常用sql语句总结
- sql 常用语句总结
- SQL常用语句总结
- 常用SQL语句总结
- 常用SQL语句总结
- 常用sql语句总结
- 常用SQL语句总结
- IOS UIView 详解
- 2631: tree
- 【疑问笔记】window.onload vs $(document).ready vs defer
- ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
- 使用shape 自定义ui之渐变半圆阴影
- 常用SQL语句总结(3)
- wilddog(野狗)js sdk和promise(bluebird)的结合使用
- 日期控件WdatePicker
- 移位运算(乘、除、余)
- __block __weak漫谈基础集合类(NSArray,NSSet,NSOrderedSet,NSDictionary,NSMapTable,NSHashTable, NSPointerArra
- js循环数组各种方法array 汇总-基础
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- 顶尖数据恢复软件官方正式版
- 四大JavaEE容器之简单比较