U
Ulag Sriramulu
I don't seem to get the transaction to rollback the inserts performed.
Below are my models
class Group < Sequel::Model
one_to_many :members, :class => :Member, :conditions => {:is_member =>
1}
one_to_many :non_members, :class => :Member, :conditions =>
{:is_member => 0}
def insert
db.transaction do
self.save
self.members.each do |member|
member.insert
end
# force error to check the transaction rolling back
raise(Sequel::Error::Rollback)
self.non_members.each do |member|
member.insert
end
end
end
end
class Member < Sequel::Model
def insert
db.transaction do
self.save
end
end
end
With this code, when I call group.insert I see the below sql in log.
However, looking in the tables associated, I do see that the group
record and one member record is inserted. Shouldn't it rollback all the
inserts in case of errors. I tried model.savetransaction => true) but
that did not change this behavior either. Am I missing something?
2009-04-21T10:00:33.620-07:00|INFO BEGIN
2009-04-21T10:00:33.620-07:00|INFO INSERT INTO `groups` (`id`) VALUES
('group-1')
2009-04-21T10:00:33.622-07:00|INFO INSERT INTO `members` (`status`,
`account_id`, `token`, `is_member`, `token_expires_at`, `type`,
`group_id`) VALUES ('confirmed', '12', NULL, 1, NULL, 'admin',
'group-1')
2009-04-21T10:00:33.623-07:00|INFO ROLLBACK
Below are my models
class Group < Sequel::Model
one_to_many :members, :class => :Member, :conditions => {:is_member =>
1}
one_to_many :non_members, :class => :Member, :conditions =>
{:is_member => 0}
def insert
db.transaction do
self.save
self.members.each do |member|
member.insert
end
# force error to check the transaction rolling back
raise(Sequel::Error::Rollback)
self.non_members.each do |member|
member.insert
end
end
end
end
class Member < Sequel::Model
def insert
db.transaction do
self.save
end
end
end
With this code, when I call group.insert I see the below sql in log.
However, looking in the tables associated, I do see that the group
record and one member record is inserted. Shouldn't it rollback all the
inserts in case of errors. I tried model.savetransaction => true) but
that did not change this behavior either. Am I missing something?
2009-04-21T10:00:33.620-07:00|INFO BEGIN
2009-04-21T10:00:33.620-07:00|INFO INSERT INTO `groups` (`id`) VALUES
('group-1')
2009-04-21T10:00:33.622-07:00|INFO INSERT INTO `members` (`status`,
`account_id`, `token`, `is_member`, `token_expires_at`, `type`,
`group_id`) VALUES ('confirmed', '12', NULL, 1, NULL, 'admin',
'group-1')
2009-04-21T10:00:33.623-07:00|INFO ROLLBACK