Hello all, I written the below code in common controller. I will pass the model_name and it has to lock and unlock the table. Please help me to correct this code... def lock_table(model_name) locked_table = model_name.find(:all, :lock => true) return locked_table; end Thanks, -- Posted via http://www.ruby-forum.com/.
> I written the below code in common controller. I will pass the > model_name and it has to lock and unlock the table.That''s not how it works. Behind the scenes, it will generate an SQL statement: SELECT FOR UPDATE, if wrapped in a transaction, then it will create a lock and then release it when transaction ends. -- Posted via http://www.ruby-forum.com/.
Fernando Perez wrote:>> I written the below code in common controller. I will pass the >> model_name and it has to lock and unlock the table. > > That''s not how it works. Behind the scenes, it will generate an SQL > statement: SELECT FOR UPDATE, if wrapped in a transaction, then it will > create a lock and then release it when transaction ends.I''m new to ruby. Can u give me some example. -- Posted via http://www.ruby-forum.com/.
If you are using MySQL, you need to make sure that you are using a DB engine that supports transactions if you plan to use them. You will probably have to use SQL to do the table locking, so if you are using mysql look in the MySQL manual for the table lock command. Then write a (pair) class method to lock and unlock the table. It might be more helpful to explain why you think you need to lock the table. Brendon. On May 6, 3:54 am, Venkat Eee <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Fernando Perez wrote: > >> I written the below code in common controller. I will pass the > >> model_name and it has to lock and unlock the table. > > > That''s not how it works. Behind the scenes, it will generate an SQL > > statement: SELECT FOR UPDATE, if wrapped in a transaction, then it will > > create a lock and then release it when transaction ends. > > I''m new to ruby. Can u give me some example. > > -- > Posted viahttp://www.ruby-forum.com/.
Brendon Whateley wrote:> If you are using MySQL, you need to make sure that you are using a DB > engine that supports transactions if you plan to use them. You will > probably have to use SQL to do the table locking, so if you are using > mysql look in the MySQL manual for the table lock command. Then write > a (pair) class method to lock and unlock the table. > > It might be more helpful to explain why you think you need to lock the > table. > Brendon. > > On May 6, 3:54�am, Venkat Eee <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>Hey, thanks to all... My code is working..thanks.... ActiveRecord::Base.connection.execute(''LOCK TABLES tablename WRITE'') ActiveRecord::Base.connection.execute(''UNLOCK TABLES'') -- Posted via http://www.ruby-forum.com/.
Tom Z Meinlschmidt
2009-May-07 12:50 UTC
Re: How to lock and unlock table in ruby on rails?
Venkat Eee wrote:> Brendon Whateley wrote: >> If you are using MySQL, you need to make sure that you are using a DB >> engine that supports transactions if you plan to use them. You will >> probably have to use SQL to do the table locking, so if you are using >> mysql look in the MySQL manual for the table lock command. Then write >> a (pair) class method to lock and unlock the table. >> >> It might be more helpful to explain why you think you need to lock the >> table. >> Brendon. >> >> On May 6, 3:54�am, Venkat Eee <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> > > > Hey, thanks to all... > My code is working..thanks.... > > ActiveRecord::Base.connection.execute(''LOCK TABLES tablename WRITE'') > ActiveRecord::Base.connection.execute(''UNLOCK TABLES'')imagine you lock the tables.. and then you will be disconnected from the session for some reason... tables are still locked, no way to work with them. That''s the point dbs have transations... ... tom -- ==============================================================================Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz ===============================================================================
On May 7, 1:50 pm, Tom Z Meinlschmidt <to...-ooGa/4BNRfSw0JuIXryQZA@public.gmane.org> wrote:> > > ActiveRecord::Base.connection.execute(''LOCK TABLES tablename WRITE'') > > ActiveRecord::Base.connection.execute(''UNLOCK TABLES'') > > imagine you lock the tables.. and then you will be disconnected from the > session for some reason... tables are still locked, no way to work with > them. That''s the point dbs have transations...actually mysql releases table locks held by a client if connection to that client dies (I suppose it might take a while for it to notice though). Table locks are generally not a very good thing generally. Fred> > ... > > tom > > -- > =========================================================================== ===> Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache > > www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz > =========================================================================== ====