事务,貌似一个很傻帽的问题

ayayad 2011-06-21 10:11:08
数据库事务我看过,意思就是几个操作要么都执行,要么都不执行
但到实际应用上就没怎么想通
比如一个转帐程序,肯定是要求,取和存同时执行
数据库事务这里没问题
但我程序里怎么写呢?
如果我写了一个取的程序,再写一个存的语句,但这样写的话算同时执行吗?
我的思路有些混乱,帮我理一下,就是程序这里不会写
...全文
125 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayayad 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 trainee 的回复:]

对于数据库,他只接受SQL语句,用PHP写也好,用存储过程写也好,最终执行的都是SQL语句,所以我搞不清楚为什么你还要分PHP事务和数据库事务
[/Quote]
对啊!
我只能这样理解,写PHP事务或存储过程是为了执行操作
写数据库事务是为了防止一旦程序被破坏或改动,影响了原来的PHP事务,而使数据库记录不被破坏
gw6328 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 trainee 的回复:]

对于数据库,他只接受SQL语句,用PHP写也好,用存储过程写也好,最终执行的都是SQL语句,所以我搞不清楚为什么你还要分PHP事务和数据库事务
[/Quote]
这首歌不错!
trainee 2011-06-23
  • 打赏
  • 举报
回复
对于数据库,他只接受SQL语句,用PHP写也好,用存储过程写也好,最终执行的都是SQL语句,所以我搞不清楚为什么你还要分PHP事务和数据库事务
trainee 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ayayad 的回复:]
引用 6 楼 jaylongli 的回复:
程序里 事物控制 本质上就是 代替数据库控制了

最后我再问下,如果我写了PHP事务或者写了存储过程,那么数据库事务还用写吗
[/Quote]
我不知道你所说的数据库事务是什么?
missyesterday 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ayayad 的回复:]
引用 6 楼 jaylongli 的回复:
程序里 事物控制 本质上就是 代替数据库控制了

最后我再问下,如果我写了PHP事务或者写了存储过程,那么数据库事务还用写吗
[/Quote]
数据库就不用写了
注意更新语句的where条件
zouyuejian 2011-06-23
  • 打赏
  • 举报
回复
学习了
ayayad 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jaylongli 的回复:]
程序里 事物控制 本质上就是 代替数据库控制了
[/Quote]
最后我再问下,如果我写了PHP事务或者写了存储过程,那么数据库事务还用写吗
ayayad 2011-06-23
  • 打赏
  • 举报
回复
也就是说数据库事务只是为了以防万一,可写可不写,但最好写,以防止程序出错而给数据库造成损失
trainee 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ayayad 的回复:]
引用 6 楼 jaylongli 的回复:
程序里 事物控制 本质上就是 代替数据库控制了

意思是不是PHP程序里写了事务就不需要再写数据库事务了??
那我要是在数据库里写了事务,程序里不写事务的话,行吗?又该怎么写呢??
[/Quote]
表达有点费解
对数据库来说,事务的控制也是一条条SQL语句, 统一的格式是BEGIN TRANSACTION ... COMMIT/ROLLBACK

你可以将整个事务流程写在一个数据库的存储过程中,也可以一条条写在PHP语句里发送给数据库,也可以一半写在存储过程中,一半写在存储过程外. 对于数据库,没有本质的差别,只是效率的问题
ayayad 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jaylongli 的回复:]
程序里 事物控制 本质上就是 代替数据库控制了
[/Quote]
意思是不是PHP程序里写了事务就不需要再写数据库事务了??
那我要是在数据库里写了事务,程序里不写事务的话,行吗?又该怎么写呢??
trainee 2011-06-22
  • 打赏
  • 举报
回复
1, 是啊,
2, 前者高, 因为可减少网络流量
ayayad 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 trainee 的回复:]
你可以将整个事务流程写在一个数据库的存储过程中,也可以一条条写在PHP语句里发送给数据库,也可以一半写在存储过程中,一半写在存储过程外. 对于数据库,没有本质的差别,只是效率的问题
[/Quote]
不写存储过程就在PHP里写,取和存语句是否一定要写在PHP事务中??
效率的话,是写存储过程高,还是别的高??
ayayad 2011-06-21
  • 打赏
  • 举报
回复
也就是说除了写数据库事务外,PHP里面也要把存和取写成事务并且加锁
没错吧!!是这个意思??
minitoy 2011-06-21
  • 打赏
  • 举报
回复
怎么同时执行?
肯定是一步步做的
chendong_j 2011-06-21
  • 打赏
  • 举报
回复
存取写在1个事务中,出现任何错误都要rollback,全都成功了之后才去commit
qiying1988 2011-06-21
  • 打赏
  • 举报
回复
存取肯定是在一个事务里,而且要加锁,保持一致性。
ACMAIN_CHM 2011-06-21
  • 打赏
  • 举报
回复
[Quote]但我程序里怎么写呢?[/Quote]只能写在同一个事务中,程序中先 BEGIN TRANSACTION, 然后做完所有 取和存 ,然后再 COMMIT
[Quote]如果我写了一个取的程序,再写一个存的语句,但这样写的话算同时执行吗?[/Quote]不算
rucypli 2011-06-21
  • 打赏
  • 举报
回复
没有同时执行 再快也有先后
加油馒头 2011-06-21
  • 打赏
  • 举报
回复
程序里 事物控制 本质上就是 代替数据库控制了

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧