0

次のテーブルがあります

  1. ベッド(ベッドID、価格、is_active、ステータス)

  2. Room(部屋ID、価格、is_active、ステータス、ベッドID)

  3. Apartment(アパート ID、価格、is_active、ステータス、アパート ID)

  4. Booking(予約ID、開始日、終了日、アパートID、部屋ID、ベッドID)

アパートの予約が完了すると、アパートのすべての部屋が利用可能になります。また、アパートの部屋のすべてのベッドが利用可能である必要があります。

部屋の予約が完了すると、その部屋のすべてのベッドが利用可能になります。

予約レコードの大量更新のためにこれを行う必要があります。for ループで可用性をチェックすることはできません。以下に示すように

for(予約 bookingObj : AllBookings){

checkAvailability(予約ID、ベッド、部屋、アパート)

}

コードはトリガーに記述します。

4

1 に答える 1

0

私はかつてあなたのように人々にコードの書き方を尋ねていましたが、これはコウモリの習性であり、変わらなければなりません。自分自身に頼ってコードを書いてみてください。それから他の人に尋ねます。疑似コードから始めて、例を見てください - これは長期的にはあなたを助けるかもしれません.

質問に従って、以下のコードを見つけてください。学んでもらいたいので、コード全体を提供するわけではありません。

trigger CheckBooking on Booking__c (after update){
    for(Booking__c booking : trigger.new){
    //Check if the booking is updated   
    If(Updated){
        //Grab the booking Id into a string var, example below:
        String bookingId = booking.Id;
        //Grab the room Id into a string var
        //Grab the Apartment Id into a string var
        //Grab the bed Id into a string var
    }
  // Do SOQL to check if the room, Apartment, bed are available 
   /*SOQL goes here*/

   //Check to make sure the availability 
    if(available){
        //do your logic
    }
    else{
        //do your logic
    }
  }        
}

注: このトリガーが各レコードに対して実行されるように、バッチ サイズ 1 でこの更新を実行します。つまり、トランザクション サイズは 1 です。

トランザクション サイズを大きくしたい場合は、次
の手順を実行します。

これらは両方とも正常に動作するはずです。試してみる。乾杯!

于 2012-11-14T19:19:27.687 に答える