# Transaction is not working in mysql database

**URL:** <https://www.ruby-forum.com/t/transaction-is-not-working-in-mysql-database/171740>\
**Category:** Rails\
**Created:** [July 8, 2009, 3:22pm UTC](https://www.ruby-forum.com/t/transaction-is-not-working-in-mysql-database/171740 "2009-07-08T15:22:36Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [July 8, 2009, 3:22pm UTC](https://www.ruby-forum.com/t/transaction-is-not-working-in-mysql-database/171740/1 "2009-07-08T15:22:36Z")

</div>

Ruby/Rails/DB/PF -v =\> 1.8.6/2.3.2/mysql/Winxp

> user.rb  
> class User  
> validates\_presence\_of :name  
> end

# code 1

def destroy  
User.count #=\> 0  
User.transaction do  
User.create({:name=\>“kkk”})  
User.create({:name=\>nil})  
end  
User.count #=\> 1  
end

# 

## why it is stored one record only even it is in side transaction block

but below code working perfectly

#code 2  
def destroy  
User.transaction do  
begin  
User.create!({:name=\>“kkk”})  
User.create!({:name=\>nil})  
rescue  
end  
end  
end

# 

i want to know, why the transaction is not happedned in previous code  
is it behaviour of Mysql database ?  
or  
behaviour of Rails?

---

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [July 8, 2009, 9:15pm UTC](https://www.ruby-forum.com/t/transaction-is-not-working-in-mysql-database/171740/2 "2009-07-08T21:15:44Z")

</div>

Your first code does not raise an exception and so the transaction is  
not rolled back. Note the exclamation mark after create!

2009/7/8, Sniper A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> # code 1
> 
> why it is stored one record only even it is in side transaction block  
> end
> 
> >

–  
Von meinen Mobilgerät aus gesendet
