我有以下表格
床(床号,价格,is_active,状态)
房间(房间ID,价格,is_active,状态,床位ID)
公寓(公寓ID,价格,is_active,状态,公寓ID)
预订(预订ID,开始日期,结束日期,公寓ID,房间ID,床位ID)
预订公寓时,公寓内的所有房间都应该可用。并且公寓客房内的所有床铺都应该可用。
预订房间时,应该提供该房间的所有床位。
我必须这样做才能批量更新预订记录。检查for循环中的可用性是不可行的。如下所示
for(Booking bookingObj:AllBookings){
checkAvailability(预订身份证,床位,房间,公寓)
}
代码将写入触发器。
答案 0 :(得分: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时执行此更新,因此此触发器针对EACH记录执行,即事务大小为1.
如果您想使交易规模更大,请执行以下操作:
1.将房间,apt。,床ID添加到列表中,然后使用SOQL检查它们是否可用
这两者都应该可以正常工作。试试看。干杯!