Вот мой код "upsert":
UPDATE LastTicket SET LastTicketNumber=LastTicketNumber+1
OUTPUT INSERTED.LastTicketNumber WHERE CategoryId='1';
IF @@ROWCOUNT=0 INSERT INTO LastTicket (CategoryId,LastTicketNumber)
OUTPUT INSERTED.LastTicketNumber VALUES ('1','2')
Итак, когда строка существует, она успешно обновляется, OUTPUT
возвращает новый, увеличенный LastTicketNumber.
С другой стороны, когда строка не существует, сервер sql успешно создает ее и заполняет данными, которые я передаю SqlCommand
(1,2). Таким образом, он создает строку, но возвращает null
. Ничего не значит! Это почему? И почему, когда я заменяю «INSERTED.LastTicketNumber» на «INSERTED.CategoryId», НАЧИНАЕТСЯ возвращать ненулевое значение, идентификатор категории. Это почему? И как вернуть то, что мне нужно?
Таблица содержит только эти два столбца и некластеризованный первичный составной ключ в обоих из них.
(MSSQL 2008)