現在、テーブルでトリガーを使用して、最後の行を WHERE 条件と ORDER BY に基づいて指定されたテーブルにコピーしています。1 つのトリガーを使用すると問題なく動作し、それぞれのテーブルにコピーされます。しかし、両方のトリガーが実行されているため、挿入したくないテーブルに前の行の重複が表示されます。(SQL2008 Management Studio)。部品番号に基づいて、この行も送信するための特定のテーブルがあります。構造は次のとおりです。
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 条件または UNION にしたいと考えています。それ以外の場合は、重複と更新のチェックも行われる可能性があります。また、データベースは非常に大きくなり、すべてのエントリが遅くなる可能性があります。order by を削除する方法も考慮に入れます。
どんな提案でも大歓迎です... THX