2016-07-13 101 views
0

我有一個表,用戶輸入名稱,dob等,我有一個User_Name列,我想從其他列自動填充。SQl Server 2012自動填充另一列

例如輸入:名稱 - 李四,DOB - 01/01/1900

我想User_Name柱與johndoe01011900自動填充(我已經有算法來連接柱部位實現期望的結果)

我只需要知道如何填充User_Name列填充用戶完成所有目標列的輸入(SQL,觸發器)。如果用戶跳過並不按順序輸入數據會怎樣?當然,需要的列是(非空)。

+0

如果他們隨後編輯他們的名字會怎麼樣?應該級聯到用戶名,以便他們獲得新的用戶名?列是否應該始終保持同步? –

回答

1

這應做到:

你可以使用一個計算字段與以下計算:

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

在下面的示例中,我使用了一個臨時表,但是這是一個常規表一樣好。

示例:

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; 

結果:

enter image description here

+0

因此,如果用戶在輸入所有必填字段後插入新記錄,它將爲他填寫字段?如果更新現有記錄(女性有時會拿丈夫的姓氏),計算的字段會更新嗎? – John

+0

順便說一下,用戶將通過ODBC鏈接表在PC上通過本地應用程序(Excel或Access)將數據輸入到永久生產表。我不希望本地應用程序計算該字段,因爲可能有許多應用程序,並且如果只有1個點 – John