事务的回滚对于拥有自增主键的表来说,insert的数据是被删除,update和delete的数据是被恢复
2014-04-01 18:19
519 查看
事务的回滚对于拥有自增主键的表来说,insert的数据是被删除,update和delete的数据是被恢复
建表代码:create table users(userid int primary key identity(1,1),uname varchar(100),utime datetime)
c#调用代码private void selectInsertSelectUpdateSelectDeleteSelect(){SqlConnection conn = getConn();SqlTransaction tran = null;try{conn.Open();tran = conn.BeginTransaction();SqlDataAdapter cmdSelect = new SqlDataAdapter("select * from users", conn);cmdSelect.SelectCommand.Transaction = tran;DataTable dtSelect = new DataTable();SqlCommand cmdInsert = new SqlCommand("insert into users(uname, utime) values('cc', GETDATE())", conn);cmdInsert.Transaction = tran;SqlDataAdapter cmdSelect_1 = new SqlDataAdapter("select * from users", conn);cmdSelect_1.SelectCommand.Transaction = tran;DataTable dtSelect_1 = new DataTable();SqlCommand cmdUpdate = new SqlCommand("update users set utime=getdate()", conn);cmdUpdate.Transaction = tran;SqlDataAdapter cmdSelect_2 = new SqlDataAdapter("select * from users", conn);cmdSelect_2.SelectCommand.Transaction = tran;DataTable dtSelect_2 = new DataTable();SqlCommand cmdDelete = new SqlCommand("delete from users where userid=(select MAX(userid) from users)", conn);cmdDelete.Transaction = tran;SqlDataAdapter cmdSelect_3 = new SqlDataAdapter("select * from users", conn);cmdSelect_3.SelectCommand.Transaction = tran;DataTable dtSelect_3 = new DataTable();cmdSelect.Fill(dtSelect);bindData(dtSelect, gv);cmdInsert.ExecuteNonQuery();cmdSelect_1.Fill(dtSelect_1);bindData(dtSelect_1, gv1);cmdUpdate.ExecuteNonQuery();cmdSelect_2.Fill(dtSelect_2);bindData(dtSelect_2, gv2);cmdDelete.ExecuteNonQuery();cmdSelect_3.Fill(dtSelect_3);bindData(dtSelect_3, gv3);/** 此处丢异常,然后回滚*/int x = 1;int y = 0;int z = x / y;tran.Commit();}catch (Exception ex){tran.Rollback();Response.Write("fuck 有异常,老子回滚了");}finally{conn.Close();}}private void bindData(DataTable dt, GridView gv){gv.DataSource = dt;gv.DataBind();}private SqlConnection getConn(){string connStr = "server=.;uid=sa;pwd=123456;database=test;";return new SqlConnection(connStr);}
相关文章推荐
- 利用事务日志来恢复Update、Delete误操作引起的数据丢
- .Nettiers的事件:下拉控件数据绑定,Insert,调用自定存储过程,获取新增ID,事务,DeepLoad,DeepSave,Save,Update,DeepDelete【原创】
- 利用事务日志来恢复Update、Delete误操作引起的数据丢
- Oracle:数据操作语句 (DML-insert into,update,delete) 部分、事务控制 (TCL-commit,rollback)
- 利用事务日志来恢复update、delete误操作引起的数据丢
- MYSQL——DML : 数据操作语句 (insert update delete)
- 掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete
- SQL Server中的XML数据进行insert、update、delete操作实现代码
- SqlServer2008误操作数据(delete或者update)后恢复数据的方法
- oracle update、delete或者drop误操作如何恢复之前是数据
- 如何对SQL Server中的XML数据进行insert、update、delete
- mysql 数据操作insert,replace,update,delete,truncate
- 数据添加(insert),删除(delete),更新(update)
- hive如何配置支持事务及insert、update、delete
- 操作数据(insert、update、delete)
- SQL0803N INSERT 语句、UPDATE 语句或由 DELETE 语句导致的外键更新中的一个或多个值无效,因为由 "1" 标识的主键、唯一约束或者唯一索引将表
- Android:SQLite无法update/insert/delete数据(数据库被locked)
- SQLServer 自定义回滚表(update/delete/insert)并实行回滚
- discuz 如何添加数据DB::insert和更新数据DB::update 查询DB::query删除DB::delete
- 利用insert,update和delete注入获取数据