由于我不经常使用它们,所以我在Triggers上还很新。 这是我的代码:-对不起,由于某些原因,我无法在评论中发布它:
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中执行select *-它仅显示第一个插入的记录: 客户编号| O_Stage 181004250828540240011O |初始通讯
我需要它检查记录是否存在以及是否存在更新舞台,但是如果它不存在(新条目),则必须插入。通过执行“如果存在”然后更新否则插入,逻辑看起来很简单,但是我不这样做知道如何写语法。
机会和O_stage表中都已经定义了阶段。这是实现目标的错误方法吗?我应该将O_stage表保留为空白,以便在执行触发器时插入值吗?
我该如何执行以下操作:
检查值是否已经存在,如果存在,则删除旧值并插入新值