jiscar 0 Geschrieben 25. Juli 2017 Melden Geschrieben 25. Juli 2017 Hallo, Ich würde gerne einen Wert (Belegnummer) meiner Datenbank beim neu einlegen um 1 erhöhen ohne auto_increment, evtl. mit ein Hilfstabelle oder ein FUNCTION. Beispiel: Letzter Schlüssel: 2017-0001 Nächster Schlüssel: 2017-0002 Hat jemand ein Fertig Lösung? Gruss, SQL-Anfänge
Cybquest 36 Geschrieben 26. Juli 2017 Melden Geschrieben 26. Juli 2017 Fertige Lösung nicht, aber Du könntest das mit nem "On Insert"-Trigger machen. Einfach mal "SQL Trigger on insert increment" o.ä. googlen :-)
zahni 587 Geschrieben 26. Juli 2017 Melden Geschrieben 26. Juli 2017 Das geht in diese Richtung: https://docs.microsoft.com/en-us/sql/t-sql/functions/next-value-for-transact-sql Da der gewünschte Wert aber ein String ist, könnte es schwierig werden.
jiscar 0 Geschrieben 26. Juli 2017 Autor Melden Geschrieben 26. Juli 2017 vielen Dank für Ihre schnelle Antwort. @Cybquest: danke für den Tipp, Ich habe die "after insert Trigger" gegooglet und ein Halbe Lösung gefunden! Diese Trigger funktioniert leider nur bis 2017-9999, CREATE TABLE [dbo].[Task]( [ID] [int] IDENTITY(1,1) NOT NULL, [TID] [nvarchar](50) NULL DEFAULT ('2017-0000'), [name] [nchar](10) NULL, PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] go ALTER trigger insertTask on Task after insert as begin update Task set TID = REPLACE(CONVERT(CHAR(4), YEAR(GETDATE()), 103), '/', '')+'-' + RIGHT('000' + CAST(inserted.ID AS VARCHAR(4)), 4) from Task join inserted on inserted.ID = Task.ID; end; go insert into Task default values; insert into Task default values; insert into Task default values; insert into Task default values; insert into Task default values; select * from Task; Ich suche weiter ....Ich bin natürlich offen für Vorschläge ;) Gruss
Cybquest 36 Geschrieben 27. Juli 2017 Melden Geschrieben 27. Juli 2017 was soll nach 9999 passieren? Wenn pro Jahr mehr gehen muss, den hinteren Teil halt gleich 5-stellig machen? ... und dann den Teil einfach so ändern: + RIGHT('0000' + CAST(inserted.ID AS VARCHAR(5)), 5)
jiscar 0 Geschrieben 27. Juli 2017 Autor Melden Geschrieben 27. Juli 2017 Ok Danke, Ich werde so anpassen.... LG
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