两张表
表A :
姓名 年龄
张三 29
李四 30
表B :
姓名 性别
张三 男
李四 女
需求是这样
①用户输入 王五 32 男
②先去查表 A与B 是否有 王五
③有的话 delete from 表A where 姓名=‘王五’
delete from 表B where 姓名=‘王五’
没有的话直接到下一步
④接着插入insert into 表A (姓名,年龄) value(‘王五’,32)
insert into 表B (姓名,性别) value(‘王五’,'男')
以上一系列的表操作 是不是用事务来封装成一个对象呢?是不是可以同步?如果是的话今天算是开始用到事务来处理了。
不知道sql语句怎么写,还有我是用 C# 的 ADO.NET 来操作数据库的
------解决思路----------------------
TransactionScope就只要写单句的……你打开那个链接,上面有例子的
至于sql的事务,如果你写存储过程,那么就用楼上的begin tran包含一个个单句sql,包含判断什么的可能是类似下面的代码
DECLARE @existName BIT
SELECT @existName=( SELECT TOP 1 1 FROM tableName)
IF(@existName=1)
BEGIN
--删除
--新增
END
如果你用ado.net的Trans,那就是connection.BeginTran,然后一句句sql执行
------解决思路----------------------
--写了个比较一般的样子,参考一下:
begin tran --开始事务
--应该是通过程序传参数值得形式获取表单中的姓名值吧
declare @count1 int,@count2 int
select @count1=count(姓名) from a where 姓名='name_value' --姓名表单值
select @count2=count(姓名) from b where 姓名='name_value'
if @count1!=0 or @count2!=0
begin
delete from a where 姓名='name_value'
delete from a where 姓名='name_value'
end
else
insert into 表A (姓名,年龄) values('name_value',age_value)
insert into 表B (姓名,性别) values('name_value','sex_value')
if @@error>0 --判断是出错(这是一个全局变量,上面有点问题)
rollback;
else
commit --出错即回滚