1

変更してから更新したい多数のレコードを取り込む ASP フォームがあります。現在、更新は、単純に SQL ステートメントを構築し、各レコードに対してデータベースを呼び出す DLL を介して、一度に 1 つずつ更新として行われます。

ここで、SQL にチェックを入れて、特定の建物から最後のタイプの場所を削除していないことを確認する必要があります。5 つの職場があり、それらすべての職場をオフィスに変えようとすると、フロアごとに少なくとも 1 つの職場が必要であるというエラーが表示され、SQL は行を更新せずに終了するはずです。現在、最後の行まで各行を更新してから、エラーをスローします。

誰かが、SQL または更新をバッチ ジョブするようにすべきだと指摘しましたが、どうすればよいかわかりません。ヒントはありますか?

4

1 に答える 1

0

いくつかのコマンドをチェーンして、一部のビジネス ルールが失敗した場合にエラーをスローできます

次のようなもの(疑似コード、テストされていません):

For i = 0 to ubound(Items) - 1
  stmt = stmt + " UPDATE BuildingFloor set Type=" + Items(i).Type + " WHERE ID=" + Items(i).ID + ";"
next
stmt = stmt + " IF NOT EXISTS(SELECT * FROM BuildingFloor"
stmt = stmt + " WHERE Type = 'WorkPlace') RAISERROR ('Must have a workplace', 16, 1);"

バッチを実行すると、すべての文がトランザクション内で実行され、エラーが発生した場合に DB が更新されなくなります。

免責事項: 単なるアイデアであり、テストされていません。

于 2010-08-20T16:31:45.387 に答える