2016-08-19 62 views
1

我有一個表,其中包含僱員名字和姓氏的字段。還有一個用戶名字段。如何在第一個和最後一個名稱字段更新的時候自動填充用戶名?SQL Server 2008:如何根據同一個表中的另一個字段更新字段

我想在這個形式的用戶名場:「公司CompanyX \ FirstName.LastName」

我已經調查觸發器,但我不認爲在表上的觸發器可以自行更新。任何幫助,將不勝感激。謝謝!

我正在使用SQL Server 2008.

+0

是的,觸發器可以做到這一點。但是,當用戶名已經存在時會發生什麼? – Lamak

+0

請顯示一些示例數據並預期輸出 – TheGameiswar

+0

在此表中可以有多個用戶名實例。此表記錄了分配給每個員工的帳戶。 –

回答

2

的串聯您可以觸發對這樣的表。

/****** Object: Trigger [dbo].[trg_AuditEmployees] Script Date: 08/04/2016 10:24:04 ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TRIGGER [dbo].[trg_AuditEmployees] 
ON [dbo].[employees] 
FOR INSERT, UPDATE 
AS 
BEGIN 

    update dbo.employees 
    set username = company + 'x\' + lastname + '.' + firstname 
    where id = select id from inserted 

END 
+1

只需注:最好的方法是加入用表和UPDATE列插入。 – gofr1

+0

謝謝,這似乎工作! –

+0

是的,我編輯了查詢。我會覆蓋所有用戶名。我從審計表插入案例中抽取了該示例,但沒有更改以說明更新 –

4

這是一個計算列的示例。我測試了它,它工作正常。

CREATE TABLE [dbo].[Table_1](
    [Company] [varchar](50) NULL, 
    [FirstName] [varchar](50) NULL, 
    [LastName] [varchar](50) NULL, 
    [UserName] AS (((([Company]+'\')+[FirstName])+'.')+[LastName]) PERSISTED 
) ON [PRIMARY] 

GO 
+0

如果表格已經存在,我該如何做到這一點? –

+1

Alter Table Table_1 ADD [UserName] AS(((([Company] +'''+ [FirstName])+'。')+ [LastName])PERSISTED GO –

0

創建計算列的用戶名,因爲所有這些屬性

相關問題