मान लें कि आप InnoDB इंजन का उपयोग कर रहे हैं उन तालिकाओं के लिए जिन पर आप लेन-देन जारी करेंगे:
यदि आवश्यकता यह है कि आपको पहले पंक्ति को पढ़ने और विशेष रूप से इसे लॉक करने की आवश्यकता है, तो इससे पहले कि आप इसे अपडेट करने जा रहे हैं, आपको एक SELECT ... FOR UPDATE
सवाल। कुछ इस तरह:
$db->beginTransaction();
try
{
$select = $db->select()
->forUpdate() // <-- here's the magic
->from(
array( 'a' => 'yourTable' ),
array( 'your', 'column', 'names' )
)
->where( 'someColumn = ?', $whatever );
$result = $this->_adapter->fetchRow( $select );
/*
alter data in $result
and update if necessary:
*/
$db->update( 'yourTable', $result, array( 'someColumn = ?' => $whatever ) );
$db->commit();
}
catch( Exception $e )
{
$db->rollBack();
}
या बस 'कच्चा' जारी करें SELECT ... FOR UPDATE
और UPDATE
$db
पर SQL स्टेटमेंट बेशक।