I think that is pointless, and would be complex, unless you need to allocate people to specific seat reservations.
maybe your easiest route would be to hold a total of available-seats in the [venue] table, and disallow any booking where the [numberTickets] would exceed the [venue] [available-seats]. That would not stop two people making a booking,a t the "same time", for the remaining few seats, so you would still have to program for that
I wonder if you could get away with:
INSERT INTO booking(bookingId, eventId, bookDate, numberTickets, contactNo)
SELECT @bookingId, @eventId, @bookDate, @numberTickets, @contactNo
SELECT V.maxPpl >= SUM(numberTickets) + @numberTickets THEN 1 ELSE 0 END AS [AreSeatsAvailable]
FROM booking AS B
JOIN event AS E
ON E.eventId = B.eventId
JOIN venue AS V
ON V.venueId = E.venueId
WHERE B.eventId = @eventId
GROUP BY B.eventId, V.maxPpl
) = 1
IF @@ROWCOUNT <> 1
.... error handling for "Booking declined, Tickets-required exceeds available-seats"
although I'm not sure if that is bullet-proof in preventing simultaneous bookings for the last few seats.