Ich verfüge über eine Benutzeroberfläche, mit der ein Benutzer ein oder mehrere Felder auswählen kann, die er einer Tabelle hinzufügen möchte. Mit diesen Daten ist auch eine orderID
verknüpft, die die Halbbildreihenfolge bestimmt.TSQL Inkrementieren der Anzahl der Variablen
Wenn der Benutzer neue Felder hinzufügt, muss ich den letzten orderID
suchen, den dieser Benutzer verwendet, und ihn um 1 erhöhen, wobei alle neuen Felder gesendet werden.
Zum Beispiel, wenn es einen einzigen Datensatz gibt, der bereits in der Datenbank existiert, würde es eine orderID
von 1 haben. Wenn ich drei weitere Felder hinzufügen möchte, würde es die letzte orderID
anzeigen, die ich verwendet habe (1) und dann für jeden der neuen hinzugefügten Datensätze, 1-4, inkrementieren.
-- Get the last ID orderID for this user and increment it by 1 as our starting point
DECLARE @lastID INT = (SELECT TOP 1 orderID FROM dbo.BS_ContentRequests_Tasks_User_Fields WHERE QID = @QID ORDER BY orderID DESC)
SET @lastID = @lastID+1;
-- Create a temp table to hold our fields that we are adding
DECLARE @temp AS TABLE (fieldID int, orderID int)
-- Insert our fields and incremented numbers
INSERT INTO @temp(fieldID, orderID)
SELECT ParamValues.x1.value('selected[1]', 'int'),
@lastID++
FROM @xml.nodes('/root/data/fields/field') AS ParamValues(x1);
Offensichtlich ist der @lastID++
Teil ist, wo mein Problem ist, aber hoffentlich hilft es, zu verstehen, was ich zu tun versuchen.
Welche andere Methode könnte dazu verwendet werden?
ich diesen Fehler bekam - 'Msg 5308, Ebene 16, Status 1, Prozedur BS_Update_ContentRequests_AvailableFields, Linie 43 Windowed Funktionen und NEXT VALUE FOR-Funktionen keine ganzzahligen Indizes wie ORDER BY-Klausel expressions.' – SBB
Hmm unterstützen. Ich habe es aktualisiert, um den Wert selbst in der Reihenfolge nach Klausel zu verwenden ... dachte nicht, dass es notwendig war, aber ich denke, es war. –
Das hat gut funktioniert :) - Danke für die Hilfe! – SBB