2017-01-22 105 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
  • 在任何其他情况下,它会插入的任何插入,比方说加拿大