Ich habe eine Datenbank, die nicht in Produktion ist. Die Haupttabelle ist CustodyDetails. Diese Tabelle enthält eine ID int IDENTITY(1,1) PRIMARY KEY
Spalte. Ich suche nach einer Möglichkeit, eine weitere eindeutige Kennung hinzuzufügen, auf die in keiner anderen Tabelle verwiesen wird Konto Der Inhalt der Spalte wäre nicht genau ein Identitätsschlüssel.
Diese neue Identitätsspalte enthält jedoch einige spezifische Details, und hier beginnt mein Problem. Das Format lautet wie folgt: XX/YY
Dabei ist XX ein automatisch inkrementierbarer Wert, der jedes neue Jahr zurückgesetzt / neu gestartet wird, und YY die letzten beiden Ziffern des aktuellen Jahres SELECT RIGHT(YEAR(GETDATE()), 2)
.
So zum Beispiel kann pretend einen Datensatz pro Tag beginnend hinzugefügt werden vom 28/12/2015 enden 2016.03.01 , die Spalte aussehen würde:
ID ID2 DATE_ADDED
1 1/15 2015-12-28
2 2/15 2015-12-29
3 3/15 2015-12-30
4 4/15 2015-12-31
5 1/16 2016-01-01
6 2/16 2016-01-02
7 3/16 2016-01-03
Ich dachte daran, das Frontend zu verwenden, um die zusammengesetzte ID zu analysieren (ID2 im Beispiel), die letzten 2 Ziffern abzurufen und mit den letzten 2 Ziffern des aktuellen Jahres zu vergleichen und dann zu entscheiden, ob ein neues Korrelativ gestartet werden soll oder nicht. Natürlich wäre es großartig, alles auf der Datenbankseite erledigen zu können.
EDIT 1: Übrigens habe ich auch Leute gesehen, die separate Tabellen nur zum Speichern paralleler Identitätsschlüssel verwenden. Ein Tabellenidentitätsschlüssel wird also zu einem zweiten Tabellensekundärschlüssel. Das klingt etwas zwielichtig, aber vielleicht ist dies der Fall, wenn eine solche Implementierung erfolgt?
BEARBEITEN 2: Diese zusätzliche ID ist eine Legacy-Dokumentreferenz, die jede Datei / jeden Datensatz kennzeichnet. Ich denke, man könnte es sich als speziellen Alias für die Haupt-ID vorstellen.
Die Anzahl der Datensätze, die diese Datenbank jährlich verarbeitet, war in den letzten 20 Jahren nicht von den 100 und ist höchst (wirklich, extrem hoch) unwahrscheinlich, dass dies natürlich der Fall sein würde, wenn sie über 99 hinausgeht Fahren Sie mit der zusätzlichen Ziffer fort und das Frontend / die Prozedur kann über 99 gehen, so dass es nicht so ist, als würde es Dinge ändern.
Natürlich haben einige dieser Details, die ich am Anfang nicht erwähnt habe, nur die Lösungsmöglichkeiten eingegrenzt, um meinen spezifischen Anforderungen gerecht zu werden, und versucht, den Problembereich breiter zu halten.
ID
= 5, 6 und 7 sollte DATE_ADDED sein 2016-01-01
und so weiter?