Триггер для обновления одного поля на основе выбора другого - две таблицы - PullRequest
0 голосов
/ 01 октября 2018

Я довольно новичок в Триггерах, так как не пользуюсь ими часто.Вот мой код: - Извините, я не могу опубликовать его в комментариях по какой-то причине:

after insert, update
AS
BEGIN
DECLARE @STAGE VARCHAR (50)

  set @STAGE = (SELECT b.Stage from INSERTED i inner join Opp_View B on i.Opp_Id = b.Opp_Id where i.Opp_Id = b.Opp_Id)

  if @STAGE IN ('not started','Initial comm','Needs assessment','Proposal submission','closing phase','Commitment to buy','sale won')
  BEGIN
  INSERT INTO O_Stage
  (Client_id,Contact_Number,O_Stage)
  SELECT i.Opp_id, 0, b.Stage FROM INSERTED i
  inner join opp_view B on i.Opp_Id = b.Opp_Id
   where i.Opp_Type = '0' and i.Opp_Id = b.Opp_Id
   End

   End
GO

Мои результаты следующие:

Результаты следующие:

Когда я вставляю возможность, оба поля имеют одинаковое значение.Это хорошо, однако .. Я считаю, что если я пытаюсь вставить другую возможность для той же записи - это не меняет значение в таблице 2, например: если я делаю выбор * из O_stage - он показывает только первую вставленную запись: Client_Id|O_Stage 181004250828540240011O |Initial Comm

Мне нужно, чтобы он проверил, существует ли запись, и если да, то Обновите Сцену, однако, если она не существует (новая запись), ее нужно вставить.вставьте, однако, я не знаю, как написать синтаксис ..

Этапы уже определены как в таблице возможностей, так и в таблице O_stage. Это неправильный способ достижения цели?Должен ли я оставить таблицу O_stage пустой, чтобы при запуске триггера он вставлял значения?

Как мне сделать следующее:

проверить, существует ли значение и существует ли оно, затем удалить старое значение и вставить новое значение

...