Sql server 2008 如果条件为真,则触发将最后一行插入所选表之一

Sql server 2008 如果条件为真,则触发将最后一行插入所选表之一,sql-server-2008,Sql Server 2008,我当前正在使用表中的触发器,根据WHERE条件和ORDER BY将最后一行复制到指定的表中。使用一个触发器可以很好地工作并复制到相应的表中。但两个触发器都在运行,导致前一行的重复项出现在我不希望插入的表中。SQL2008管理工作室。我也有基于零件号发送此行的特定表格。结构如下: ALTER TRIGGER NewT3650 ON JD_Passdata FOR INSERT AS INSERT T3_650_TestData (SerialNumber, Partnumber, etc) SE

我当前正在使用表中的触发器,根据WHERE条件和ORDER BY将最后一行复制到指定的表中。使用一个触发器可以很好地工作并复制到相应的表中。但两个触发器都在运行,导致前一行的重复项出现在我不希望插入的表中。SQL2008管理工作室。我也有基于零件号发送此行的特定表格。结构如下:

ALTER TRIGGER NewT3650 ON JD_Passdata
FOR INSERT 
AS
INSERT T3_650_TestData (SerialNumber, Partnumber, etc)
SELECT TOP 1 SerialNumber, Partnumber, etc
FROM JD_Passdata
WHERE partnumber = 'T3_650'
ORDER BY passdata_ndx DESC

ALTER TRIGGER NewT4450 ON JD_Passdata
FOR INSERT 
AS
INSERT T4_450_TestData (SerialNumber, Partnumber, etc)
SELECT TOP 1 SerialNumber, Partnumber, etc
FROM JD_Passdata
WHERE partnumber = 'T4_450'
ORDER BY passdata_ndx DESC
原始PassData表:

201244999, T4_450
201245001, T3_650
201245002, T3_650
201245003, T3_650
返回表1的结果

201245001, T3_650
201245002, T3_650
201245003, T3_650
返回表2的结果

201244999, T4_450
201244999, T4_450
201244999, T4_450
我希望这是一个OR条件或联合,只接受最后一行并将其输入到正确的表中,如果可能的话,删除额外的触发器。否则,检查复制和更新也可以这样做。此外,数据库将变得相当大,以进行描述,每个条目可能会变慢。此外,还需要考虑一种通过删除订单的方法


任何建议都将不胜感激…THX

我有一个解决方案,它适用于两个触发器,但在出现空结果时可能会导致问题。它确实在年前就取消了订单,而且可能会更快。这样做的目的是使用唯一的最后一行索引号作为行位置,并检查零件号以确定插入到新表中。此外,当我为不同的表添加使用相同格式的第三个触发器时,初始移动到主表JD_PassData失败。还不知道为什么

以下是新代码:

更改JD_Passdata上的触发器NewT3650 插入后 像 插入T3_650_测试数据序列号、零件号等 选择序列号、零件号等 来自JD_Passdata 其中passdata\u ndx=从JD\u passdata中选择MAXpassdata\u ndx,PartNumber='T3\u 650'