ヨハンの答えは、単一のレコードに適しています。SQL データベース (Oracle、MSSql、MySql、Firebird など) を使用している場合、複数のレコードに使用できる追加のアプローチがあります: トランザクションです。例として ADO を使用する
TForm1 = class(TForm)
ADOConnection: TADOConnection;
…
// start the transaction
ADOConnection.BeginTrans;
…
// create records and post them
…
// rollback removes the records posted
// since the transaction was started
ADOConnection.RollbackTrans;
… or …
// commit completes saving the records posted
// since the transaction was started
ADOConnection.CommitTrans;
トランザクションを明示的に開始しない場合、レコードがデータベースにポストされると、トランザクションが自動的に開始およびコミットされます。
François の答えはトランザクションに似ていますが、ClientDatasets でのみ機能します。