Meine Fragen sind
wie man den Wert einer Spalte um 1 erhöht.
Angenommen, eine Spalte ID
hat die Werte 1,2,3,4, ..
Wenn ich diese Tabelle aktualisiere, ID
sollte die Spalte um 1 erhöht werden.
Jetzt ID
wird 2,3,4,5, ..
Meine Fragen sind
wie man den Wert einer Spalte um 1 erhöht.
Angenommen, eine Spalte ID
hat die Werte 1,2,3,4, ..
Wenn ich diese Tabelle aktualisiere, ID
sollte die Spalte um 1 erhöht werden.
Jetzt ID
wird 2,3,4,5, ..
Antworten:
So fügen Sie jedem Wert in der Tabelle einen hinzu ...
UPDATE myTable
SET ID = ID + 1
Verwenden Sie eine Spalte mit IDENTITY, um einen neuen Wert zu erstellen, der mehr als der vorherige höchste Wert ist (normalerweise)
ISNULL
Aussage : UPDATE myTable SET ID = ISNULL(ID, 0) + 1
(Aus dieser SO-Antwort entnommen )
SET [Lic] = [Lic] + @dif
. Hinweis @dif Variable kann positiv, 0 oder negativ sein
Wenn Sie für jede automatisch generierte Zeile eine eindeutige Nummer haben möchten, ist dies IDENTITY gemäß Neils Antwort.
Wenn Sie jedes Mal, wenn Sie die Tabelle aktualisieren, die Werte erhöhen möchten (dh es handelt sich nicht um Schlüssel):
Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>
Versuche dies:
Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1
Sie können verwenden, IDENTITY
was dies für Sie erledigt.
CREATE TABLE [dbo].[MyTable](
[MyTableID] [int] IDENTITY(1,1) NOT NULL,
-- Other columns
)
Wenn Sie Ihren ersten Datensatz einfügen, erhalten Sie eine Id
von 1.
In Oracle ist der Code etwas kniffliger.
Sie müssen mit dem Sequenzobjekt ein Feld für die automatische Inkrementierung erstellen (dieses Objekt generiert eine Zahlenfolge).
Verwenden Sie die folgende CREATE SEQUENCE-Syntax:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
Der obige Code erstellt ein Sequenzobjekt mit dem Namen seq_person, das mit 1 beginnt und um 1 erhöht wird. Außerdem werden bis zu 10 Werte für die Leistung zwischengespeichert. Die Cache-Option gibt an, wie viele Sequenzwerte für einen schnelleren Zugriff im Speicher gespeichert werden.
Um einen neuen Datensatz in die Tabelle "Personen" einzufügen, müssen wir die Funktion nextval verwenden (diese Funktion ruft den nächsten Wert aus der Sequenz seq_person ab):
INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
Die obige SQL-Anweisung würde einen neuen Datensatz in die Tabelle "Personen" einfügen. Der Spalte "ID" würde die nächste Nummer aus der Sequenz seq_person zugewiesen. Die Spalte "Vorname" würde auf "Lars" und die Spalte "Nachname" auf "Monsen" gesetzt.
Sie könnten Folgendes versuchen:
DECLARE @i INT
SET @i = @@ROWCOUNT + 1
INSERT INTO YourTable
(Identity Column)
VALUES
(@i + 1)