2016-07-13 15 views
0

Ich habe eine Tabelle, in der ein Benutzer Name, DOB, etc. eingegeben und ich habe eine User_Name Spalte, die ich automatisch aus anderen Spalten gefüllt werden soll.SQl Server 2012 AutoFill eine Spalte aus einem anderen

Zum Beispiel Eingabe: Name - John Doe, DOB - 01/01/1900

Ich mag die User_Name Spalt automatisch mit johndoe01011900 gefüllt werden (ich habe bereits den Algorithmus, um die Säulenteile verketten das zu erreichen, gewünschtes Ergebnis)

Ich muss nur wissen, wie (SQL, Trigger), um die User_Name Spalte gefüllt zu haben, sobald der Benutzer die Eingabe aller Zielspalten abgeschlossen. Was passiert, wenn der Benutzer herumspringt und die Daten nicht in der richtigen Reihenfolge eingibt? Natürlich sind die benötigten Spalten (nicht null).

+0

Was passiert, wenn sie ihren Namen später bearbeiten? Sollte das zum UserName kaskadieren, damit sie einen neuen Benutzernamen bekommen? Sollen die Spalten immer synchron sein? –

Antwort

1

Dies sollte es tun:

Sie ein berechnetes Feld mit der folgenden Berechnung verwenden:

LOWER(REPLACE(Name, ' ', ''))+CONVERT( VARCHAR(10), DateOfBirth, 112)) 

Im folgende Beispiel ich eine temporäre Tabelle verwendet habe, aber dies ist das gleiche für die regelmäßigen Tabellen Gut.

BEISPIEL:

CREATE TABLE #temp(Name  VARCHAR(100) 
       , DateOfBirth DATE 
       , CalcField AS LOWER(REPLACE(Name, ' ', ''))+CONVERT( VARCHAR(10), DateOfBirth, 112)); 

INSERT INTO  #temp(Name 
       , DateOfBirth) 
VALUES 
     ('John Doe' 
    , '01/01/1900'); 

SELECT * 
FROM #temp; 

ERGEBNIS:

enter image description here

+0

Wenn also ein Benutzer einen neuen Datensatz einfügt, nachdem er alle erforderlichen Felder eingegeben hat, wird das Feld für ihn ausgefüllt? Wie wäre es, wenn ein bestehender Datensatz aktualisiert wird (Frauen nehmen manchmal den Nachnamen des Ehemannes an), wird das berechnete Feld aktualisiert? – John

+0

BTW die Benutzer werden Daten in eine permanente Produktionstabelle über eine lokale App (Excel oder Access) auf ihrem PC über ODBC verknüpfte Tabelle zu unterstellen. Ich möchte nicht, dass die lokale App das Feld berechnet, da es zahlreiche Apps gibt und die Art und Weise, wie das Feld berechnet wird, einfacher ist, wenn es nur einen Punkt gibt – John