Marek Z. Programista
Temat: Automatyczne numerowanie (sql server)
Witam, chciałem sobie utworzyć automatyczne numerowanie wprowadzanych dokumentów. Wszystkie rozwiązania jakie znalazłem wykorzystywały id rekordu do numeracji dokumentów czyli dla id=1 nr dokumentu był D0001, id=2 D0002. W moim przypadku to rozwiązanie odpada bo kolumna id jest typu UNIQEIDENTIFIER.Postanowiłem to rozwiązać numerowaniem wierszy czyli dla wiersza 1 nr dokumentu jest D0001, dla wiersza 2 D0002 itd.
Napisałem funkcję która ma to realizować i gdy dodaję pierwszy rekord to nr dokumentu jest ok czyli D0001, gdy dodam drugi dostaję błąd:
No row was updated. The data in row 2 was not committed. Error Source: Net SqlClient Data Provider. Error message: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <=, >, >= or when the subquery is used as expression.
Będę wdzięczny za pomoc i wytłumaczenie dlaczego tak się dzieje.
Kod funkcji:
Marek Zając edytował(a) ten post dnia 08.06.11 o godzinie 16:02
CREATE FUNCTION NumerDokumentu()
RETURNS CHAR(5)
AS
BEGIN
DECLARE @NrWiersza INT
SET @NrWiersza = (SELECT ROW_NUMBER() OVER (ORDER BY Tytul) FROM Tabela
RETURN 'D' + '000' + CONVERT(VARCHAR(10), @NrWiersza)
END