gpt4 book ai didi

sql - 检查行是否存在,否则插入

转载 作者:行者123 更新时间:2023-12-01 16:24:57 25 4
gpt4 key购买 nike

我需要编写一个 T-SQL 存储过程来更新表中的一行。如果该行不存在,则插入它。所有这些步骤都包含在一个事务中。

这是一个预订系统,因此它必须原子且可靠。如果事务已提交且航类已预订,则它必须返回 true。

我确定如何使用@@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?)

最佳答案

我假设每个航类只有一行?如果是这样:

IF EXISTS (SELECT * FROM Bookings WHERE FLightID = @Id)
BEGIN
--UPDATE HERE
END
ELSE
BEGIN
-- INSERT HERE
END

我假设我所说的,因为你的做法可能会超额预订航类,因为当最多 10 张机票而你预订 20 张机票时,它会插入一个新行。

关于sql - 检查行是否存在,否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/639854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com