Ανώνυμος χρήστης
Περισσότερα
Ελέγξτε αν υπάρχει γραμμή, αλλιώς εισάγετε
Πρέπει να γράψω μια αποθηκευμένη διαδικασία T-SQL που ενημερώνει μια γραμμή σε έναν πίνακα. Εάν η γραμμή δεν υπάρχει, την εισάγει. Όλα αυτά τα βήματα τυλίγονται από μια συναλλαγή.
Πρόκειται για ένα σύστημα κρατήσεων, οπότε πρέπει να είναι ατομικό και αξιόπιστο. Πρέπει να επιστρέφει true αν η συναλλαγή έχει δεσμευτεί και η πτήση έχει κρατηθεί.
Είμαι νέος στην T-SQL, και δεν είμαι σίγουρος για το πώς να χρησιμοποιήσω το @@rowcount
. Αυτό έχω γράψει μέχρι τώρα. Βρίσκομαι στο σωστό δρόμο; Είμαι σίγουρος ότι είναι ένα εύκολο πρόβλημα για εσάς.
-- BEGIN TRANSACTION (HOW TO DO?)
UPDATE Bookings
SET TicketsBooked = TicketsBooked + @TicketsToBook
WHERE FlightId = @Id AND TicketsMax < (TicketsBooked + @TicketsToBook)
-- Here I need to insert only if the row doesn't exists.
-- If the row exists but the condition TicketsMax is violated, I must not insert
-- the row and return FALSE
IF @@ROWCOUNT = 0
BEGIN
INSERT INTO Bookings ... (omitted)
END
-- END TRANSACTION (HOW TO DO?)
-- Return TRUE (How to do?)
225
3
Υποθέτω ότι υπάρχει μία μόνο σειρά για κάθε πτήση; Αν ναι:
Υποθέτω αυτό που είπα, καθώς ο τρόπος που κάνετε τα πράγματα μπορεί να υπερκρατήσει μια πτήση, καθώς θα εισάγει μια νέα σειρά όταν υπάρχουν 10 εισιτήρια το πολύ και εσείς κάνετε κράτηση 20.
Αυτό είναι κάτι που χρειάστηκε να κάνω πρόσφατα:
Μπορείτε να χρησιμοποιήσετε τη Λειτουργικότητα Συγχώνευση για να επιτύχετε. Διαφορετικά, μπορείτε να το κάνετε: