【问题标题】:how to implement trigger logic? if value [1] is part of insert, populate other table with other value如何实现触发逻辑?如果值 [1] 是插入的一部分,则用其他值填充其他表
【发布时间】:2012-05-24 23:54:42
【问题描述】:

我有以下插入触发器,它实质上是将插入中的重复行写入 QA/QC 表(IAW 业务要求)。

  INSERT dbo.TBL_LOCATIONS(
  Column1, Column2
  )
  SELECT 
  a.Column1,  a.Column2
  From
  (  
    SELECT  
   Column1,   Column2
     FROM inserted  
  ) AS a 
  end
GO

我正在尝试做的是在tbl_locations 中填充[Column1],其中包含基于对插入表中插入的可能值的逻辑测试的一系列值,例如如果[a.Column1] 为“1”,则在tbl_locations.Column1 中插入“某个字符串”,如果[a.Column1] 为“2”,则在tbl_locations.Column1 中插入“某个其他字符串”,如果[a.Column1] 为“3”,然后在tbl_locations.Column1...中插入“Yet another string”...

【问题讨论】:

  • 如果你有一个 SubType 模型,它可能应该有自己的表...
  • 听起来你想要一个CASE 表达式来执行从一组值到另一组值的简单转换。也有点不清楚为什么您再次冗余地选择您选择的数据。
  • "当这个值被插入到这个 tbl 中时,想要看到这个值在这个 tbl 中更新"。就业务规则而言,这个问题是更大图景的一部分,其中插入、更新和删除被复制到表 a;表 x、y、z 是 div 的表。 x,y,z 用于跟踪产品 x,y,z 和管理使用 tbl a 来“查看”所有产品。 x、y 和 z 部门的员工可能不太关心,他们希望在他们的 tbls 上执行他们的添加、删除和更新,并让管理层通过查看 tbla 来弄清楚他们在做什么。插入逻辑运行良好,我现在需要解决更新问题。

标签: sql sql-server-2008


【解决方案1】:

或者,您可以尝试这样的事情:

INSERT INTO dbo.TBL_LOCATIONS (Column1, Column2)
SELECT
  s.Description,
  i.Column2
FROM inserted i
LEFT JOIN (
  VALUES
    (1, 'Polygon: Determination Made by GPS Survey'  ),
    (2, 'Polygon: Determination Derived from NWI'    ),
    (3, 'Polygon: Determination Made by Other Means' ),
    (4, 'Polygon: Legal Jurisdictional Determination')
) s (ID, Description)
ON i.Column1 = s.ID

【讨论】:

    【解决方案2】:
             INSERT dbo.TBL_LOCATIONS( 
              Column1, Column2 
              ) 
              SELECT  
              a.Column1,  a.Column2 
              From 
              (   
                SELECT   
               Column1= case
            when Column1= 1 then 'Polygon: Determination Made by GPS Survey'
            when Column1= 2 then 'Polygon: Determination Derived from NWI' 
            when Column1= 3 then 'Polygon: Determination Made by Other Means'
            when Column1= 4 then 'Polygon: Legal Jurisdictional Determination'
            end ,
            Column2 
                 FROM inserted   
              ) AS a  
              end 
    GO
    

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 2020-05-14
      相关资源
      最近更新 更多