2017-01-22 3 views
0

Использование Microsoft SQL Server Management Studio.Создание простого триггера FOR INSERT по таблице

Мне нужна помощь в создании быстрого запуска для INSERT триггера для таблицы, называемой dbo.Employees, использующей популярную базу данных Northwind. Триггер должен по умолчанию использовать столбец «Регион» в dbo.Employees для «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
  • В любом другом случае, он будет вставить то, что было вставлено, допустим, Канада