1

基本的に、EstimatedDepartureDate のすべての日付フィールドを指定された日付に更新するクエリを作成しています。作成したビューを使用してアカウントのリストを取得して更新し、これをすべての従業員レコードを持つ tnpEmployee テーブルに対して実行しています。ただし、このクエリを実行すると、常に次のような出力が得られます。

(1 行が影響を受けます)

(影響を受ける 55 行)

のように、最初に 1 つの行に影響を与え、次に残りの行に影響を与えます。そして、関心のある人物のリストを表示するために作成したそのビューで SQL を実行すると、クエリを実行するたびに 1 つのレコードが少なくなり、その下部 (影響を受ける 55 行) の数値が 1 つ少なくなります。 )、次の実行では 54 が表示されます。

私が実行しているクエリは次のとおりです。

UPDATE tnpEmployee 
SET tnpEmployee.EstimatedDepartureDate='2014-04-01 13:37:43.000'
FROM tnpEmployee
INNER JOIN vnpGetActiveAccountsAgainstToBeDisabled
ON tnpEmployee.EmployeeID=vnpGetActiveAccountsAgainstToBeDisabled.EmployeeID
WHERE tnpEmployee.Email=vnpGetActiveAccountsAgainstToBeDisabled.Email

どんな助けでも大歓迎です、それは私を殺しています! 実行する必要があるのは、行がその日付フィールド セットを取得することだけです。実行ごとに 1 つ少なくなるのではなく、作成した非常に基本的なビューにすべて入力する必要があります。また、そのビューを実行してレコードを 1 つ減らすと、すべてのレコードが新しい日付で更新されます。

4

1 に答える 1

0

SQL ステートメントを書き直してみることができます。

UPDATE tnpEmployee 
SET tnpEmployee.EstimatedDepartureDate='2014-04-01 13:37:43.000'
WHERE tnpEmployee.EmployeeID IN (
SELECT vnpGetActiveAccountsAgainstToBeDisabled.EmployeeID
FROM vnpGetActiveAccountsAgainstToBeDisabled
WHERE tnpEmployee.Email=vnpGetActiveAccountsAgainstToBeDisabled.Email
);

専門家がすでに示唆しているように、結果はクエリがトリガーを呼び出すように見えます。

于 2013-04-02T22:33:53.443 に答える