マニュアルデータベースアップデート

自動データベースアップデートを無効にするには、autoSaveDatabaseUpdatesグローバルプロパティをfalseに設定します。本プロパティは初期設定ではtrueとなっており、すべてのデータベーステーブルのアップデート処理が制御されます。個々のテーブルの自動保存挙動を制御するには、テーブルオブジェクトのautoSaveUpdatesプロパティを設定します。自動保存を無効にすると、記録値に対するすべての変更がローカルで記録されるようになります。その後、save changesコマンドを利用して、データベースにこれらの変更を書き込むことができます。

例:

set the autoSaveDatabaseUpdates to false //自動アップデートを無効にします

set info to table "memberinfo" of myDB

set member to the record of info where memberNumber is 16

Add 60 days to member's expirationDate

put "23" into member's memberNumber

put the records of info //「((expirationdate:"2020-04-13", membernumber:"16"),(expirationdate:"2019-12-30", membernumber:"18"))」を表示します

save all changes to info //保留中のすべてのアップデートをテーブルに送信します

put the records of info //「((expirationdate:"2019-12-30", membernumber:"18"),(expirationdate:"2020-06-12", membernumber:"23"))」を表示します

自動保存を無効にすると、recordsToUpdate()関数を利用して、保存されていないアップデートが存在するテーブルからフェッチした記録のリストを入手できます。これらの記録は、save changesコマンドを利用する際に保存されます。以下の例では、自動保存を無効にする方法と、save changesコマンドを利用する際に保存される記録のログ方法を示しています。

例:

set myDB to (type:"odbc", DSN:"mySQLDB", user:"root", password:decodetext("AR@ts:%j"))

set the autoSaveDatabaseUpdates to false

set palette to table "colorpalette" of myDB

set myColor to the record of palette where color is "purple"

put "45" into myColor's brightness

log recordsToUpdate(palette) //「((brightness:"45", color:"purple", ID:"3"))」をログに記録します

記録アップデートのデータベースへの書き込み中に(save changesコマンドの結果として、または自動保存の結果からのいずれかで)エラーが発生する場合は、SenseTalkは例外を投げます。tryまたはcatchブロックが実際に例外をキャッチする場合は、failedUpdateRecords()関数とfailedUpdateExceptions()関数をテーブルに呼び出して、アップデートに失敗した変更が含まれる記録のリストと、これらの記録から生じた例外を、それぞれ入手することができます。

例:

try

set info to table "memberinfo" of myDB

set member to the record of info where memberNumber is 18

put "05/25/2018" into member's expirationDate

catch

put failedUpdateRecords(info) //「((expirationdate:"05/25/2018", membernumber:"18"))」を表示します

put failedUpdateExceptions(info) //「(ST_ODBC_ResultError: [MySQL][ODBC 5.3(a) Driver][mysqld-5.7.11-log]Incorrect date value: '05/25/2018' for column 'expirationdate' at row 1, SQLSTATE=HY000)」を表示します

end try

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant