Panther967 Geschrieben 18. Januar 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 18. Januar 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 18. Januar 2006 Teilen 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). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. Januar 2006 Teilen Geschrieben 18. Januar 2006 ... und das ganze als update trigger implementiert. CREATE TRIGGER trgHoechsteZahl ON Tabelle FOR UPDATE AS blablabla s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Panther967 Geschrieben 18. Januar 2006 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 18. Januar 2006 Teilen Geschrieben 18. Januar 2006 Du sollst das dort auch nicht als Standardwert eingeben...hatte keiner so gesagt Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Panther967 Geschrieben 18. Januar 2006 Autor Teilen 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?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 18. Januar 2006 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
realgun Geschrieben 18. Januar 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.