2017-01-22 104 views
0

使用Microsoft SQL Server Management Studio。在表上創建簡單的FOR INSERT觸發器

我需要幫助創建一個快速的FOR INSERT觸發器,用於使用流行的Northwind示例數據庫的名爲dbo.Employees的表。如果沒有插入區域,觸發器應該將dbo.Employees中的'Region'列默認爲'WA'。

如果插入的區域是'WA',那麼'國家'列應默認爲'美國'。任何幫助將非常感激。

員工表,如果它可以幫助:

1

+1

觸發器是這樣做的錯誤方法。 「默認」約束是正確的。 –

+0

@GordonLinoff我這樣做純粹是爲了學習,這就是爲什麼我要使用FOR INSERT觸發器 –

+0

。 。觸發器可以做很多事情並且是需要的。當練習在不適當的環境中教授使用它們時,這是很難過 –

回答

2

像戈登·利諾夫說,這應該是一個約束,但如果你真的需要得到使用觸發器完成這件事,這將工作:

CREATE TRIGGER dbo.EmployeesTrigger ON dbo.Employees 
FOR INSERT 
AS 
BEGIN 
    UPDATE E 
    SET E.Country = CASE I.Country 
      WHEN 'WA' THEN 'USA' 
      ELSE ISNULL(I.Country, 'WA') 
     END 
    FROM dbo.Employees AS E 
    INNER JOIN INSERTED AS I 
     ON I.EmployeeID = E.EmployeeID; 
END 

一旦插入內容,它將更新記錄。

  • 如果WA插入作爲一個國家,它會更新到美國
  • 如果NULL或沒有插入,則默認爲WA
  • 在任何其他情況下,它會插入的任何插入,比方說加拿大