次のコードを使用して、非 autocommin 接続にいくつかのレコードを投稿します。
ZConnection1.AutoCommit := False;
try
ZTable1.Insert;
ZTable1.FieldByName('name').AsString := 'John Doe';
ZTable1.Post;
ZConnection1.Commit;
except
ZConnection1.Rollback;
end;
このコードを実行すると、データベースには何も保存されません。
次のコードを試した後...
ZConnection1.AutoCommit := False;
with ZQuery1 do begin
SQL.Text := 'INSERT INTO mytable (name) values ("John Doe")';
ExecSQL;
SQL.Text := SQL.Text + 'COMMIT' ;
try
ExecSQL;
except
SQL.Text := 'ROLLBACK';
ExecSQL;
end;
end;
...すべて完璧に機能します。
最初のケースで何が間違っていますか? Delphi6、MySql、Zeos ライブラリ、InnoDB テーブルを使用しています。