jiscar 0 Geschrieben 25. Juli 2017 Melden Teilen 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 26. Juli 2017 Melden Teilen 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 :-) Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 26. Juli 2017 Melden Teilen 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. Zitieren Link zu diesem Kommentar
jiscar 0 Geschrieben 26. Juli 2017 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 27. Juli 2017 Melden Teilen 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) Zitieren Link zu diesem Kommentar
jiscar 0 Geschrieben 27. Juli 2017 Autor Melden Teilen Geschrieben 27. Juli 2017 Ok Danke, Ich werde so anpassen.... LG Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.