0

テーブルの特定の値が変更された場合、SQLデータベースからselectステートメントの行をプルする必要があります。

たとえば、テーブルに呼び出さpriceれた列がありPriceます。ユーザーが(asp.netアプリを介して)の値を変更した場合、priceその行全体を選択します。これはワークフローで実行され、変更された後に変更された行が変更されたという電子メールがユーザーに送信されます。

これは意味がありますか?誰かが私を使用する手順または機能の正しい方向に向けることができますか?ありがとう。

4

3 に答える 3

1

これを実現するには、SQLトリガーを使用できます。

これを達成する方法を示すチュートリアル(説明したとおりにPriceを使用)があります:http://benreichelt.net/blog/2005/12/13/making-a-trigger-fire-on-column-change/

于 2012-08-06T19:55:16.680 に答える
0

行を更新するには、その行「WHERE uniqueID = [someid]」を更新する必要があります。その直後にselectを実行することはできませんか?(SELECT * FROM [テーブル] WHERE uniqueID = [someid])

于 2012-08-06T19:53:47.813 に答える
0

データがどのように見えるか (または、これがどのデータベースか、少し難しい) を知らなくても、日付と ID が同じままである履歴テーブルがあると仮定すると、次のようになります...

+----+-------+------------+
| ID | PRICE | CHNG_DATE  |
+----+-------+------------+
|  1 | 2.5   | 2001-01-01 |
|  1 | 42    | 2001-01-01 |
|  2 | 4     | 2001-01-01 |
|  2 | 4     | 2001-01-01 |
|  3 | 4     | 2001-01-01 |
|  3 | 3     | 2001-01-01 |
|  3 | 2     | 2001-01-01 |
+----+-------+------------+

データベースがサポートしてWithRow_numberて、次のように書くことができます

WITH data 
     AS (SELECT id, 
                price, 
                chng_date, 
                Row_number() 
                  OVER ( 
                    partition BY id 
                    ORDER BY chng_date) rn 
         FROM   price) 
SELECT data.id, 
       data.price     new, 
       data_prv.price old, 
       data.chng_date 
FROM   data 
       INNER JOIN data data_prv 
               ON data.id = data_prv.id 
                  AND data.rn = data_prv.rn + 1 
WHERE  data.price <> data_prv.price 

それはこれを生み出すでしょう

+----+-----+-----+------------+
| ID | NEW | OLD | CHNG_DATE  |
+----+-----+-----+------------+
|  1 |  42 | 2.5 | 2001-01-01 |
|  3 |   3 | 4   | 2001-01-01 |
|  3 |   2 | 3   | 2001-01-01 |
+----+-----+-----+------------+

デモ

データベースLAG()がさらに簡単にサポートしている場合

WITH data 
     AS (SELECT id, 
                price                   new, 
                chng_date, 
                Lag(price) 
                  OVER ( 
                    partition BY id 
                    ORDER BY chng_date) old 
         FROM   price) 
SELECT id, 
       new, 
       old, 
       chng_date 
FROM   data 
WHERE  new <> old

デモ

于 2012-08-06T20:14:45.673 に答える