プロが教えるわが家の防犯対策術!

ActivePerl(5.6.1)で、SQLServer2000に接続してデータ更新を行う際に、トランザクションを制御して、コミット/ロールバックを使いたいと思っています。

データベースへの接続はODBCです。
まずは auto commit の設定をオフにしよう・・・と思ってやってみたのですが、これが成功しません。

何かよい方法はないでしょうか?よろしくお願いします。

【環境】WinNT,IIS

A 回答 (1件)

データベースに接続後に、以下を記述してみてください。



----------------------------------------------------------------------
 @Results = $odbc->GetFunctions(
   $odbc->SQL_API_SQLTRANSACT, $odbc->SQL_API_SQLSETCONNECTOPTION
 );
 print "トランザクションのサポート ⇒  $Results[0]\n";
 print "接続オプションセット関数のサポート ⇒  $Results[1]\n";
----------------------------------------------------------------------

これで、両方とも「1」が表示されれば、以下の要領でトランザクションの制御を行うことができます。

----------------------------------------------------------------------
 # オートコミットOFF
 $odbc->SetConnectOption($odbc->SQL_AUTOCOMMIT, 0)

 # コミット
 $odbc->Transact($odbc->SQL_COMMIT);

 # ロールバック
 $odbc->Transact($odbc->SQL_ROLLBACK);
----------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

できました!ありがとうございました。

お礼日時:2002/07/31 13:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!