Panther967 Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 Morgen zusammen, ich abreite gerade an einer MS SQL 2000 Datenbank im Enterprise Manager. Nun habe ich folgendes Problem. Ich brauche in einer Tabelle eine Spalte, in der eine Zahl drin steht. In der nächsten Zeile brauche ich als Wert die höchste Zahl, die sich in dieser Spalte 'Zahl' befindet + 1. Also einen Zähler, der bei jedem neuen anlegen einer Zeile die Zahl um 1 hochzählt. Es darf aber nicht die Auto ID sein. Am besten wäre es natürlich noch, wenn ich den Startwert der Zahl X selbst definieren kann. Hoffe, dass es einigermaßen verständlich ist:) Vielen Dank schon mal im voraus.
geloescht_JesterDay Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 UPDATE Tabelle SET Zaehler = (SELECT MAX(Zaehler)+1 FROM Tabelle) WHERE ID = IdVomNeuestenSatz Wenn MS SQL Subselects beherrscht, sollte das in der Art gehen.
bigpoint Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 Wenn MS SQL Subselects beherrscht, sollte das in der Art gehen. Warum sollte er es nicht tun Du kannst das ganze auch mit Trigger lösen (soweit es automatisiert sein sollte).
Amstelchen Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 ... und das ganze als update trigger implementiert. CREATE TRIGGER trgHoechsteZahl ON Tabelle FOR UPDATE AS blablabla s'Amstel
Panther967 Geschrieben 18. Januar 2006 Autor Geschrieben 18. Januar 2006 Eure Ideen sind zwar gut, aber Anweisungen kann ich im Enterprisemanager in den Tabellen beim Standardwert nicht eingeben. Es muss irgendeinen Befehl dafür geben. Wie z.B. getdate, dabei zeigt er mir das aktuelle Datum mit Uhrzeit an.
Goos Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 Du sollst das dort auch nicht als Standardwert eingeben...hatte keiner so gesagt Goos
Panther967 Geschrieben 18. Januar 2006 Autor Geschrieben 18. Januar 2006 Es muss aber eine Funktion sein, die man beim standardwert hinterlegt kann. Oder kann ich beim Standardwert ein Skript hinterlegen, in den ich die Anweisungen schreiben kann??
Amstelchen Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 du kannst diese logik auch nur entweder auf anwendungsseite - ausserhalb der datenbank - oder eben als prozedur/trigger serverseitig einsetzen ... Oder kann ich beim Standardwert ein Skript hinterlegen, in den ich die Anweisungen schreiben kann??standardwerte (DEFAULT) lassen allerdings neben konstanten auch funktionen zu, d.h. du kannst statt einem trigger auch einen DEFAULT auf die spalte setzen und dort eine funktion verwenden. Create table Tabelle (NR integer not null [B]DEFAULT meineFunktionZumInkrementieren()[/B], DATUM datetime, FELD1 char(30), FELD2 char(1), ICHTRINKEEIN bit) s'Amstel
realgun Geschrieben 18. Januar 2006 Geschrieben 18. Januar 2006 Mal so ne Frage zum Verständnis, was ist an der ID so verkehrt? Du kannst den Startwert setzen und die Schrittweite bestimmen.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden