0

削除時に起動するトリガーに次の SQL ステートメントがあります。

UPDATE bk2_InfoPages
SET SortOrder = SortOrder - (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= SortOrder)

私の問題は、最後がテーブルではなくテーブルをSortOrder参照していることです。エイリアスはステートメントであるため、テーブルに追加することはできません。代わりにどうすればよいですか?Deletedbk2_InfoPagesbk2_InfoPagesUPDATE

4

2 に答える 2

2
UPDATE bk2_InfoPages
SET SortOrder = SortOrder - (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= bk2_InfoPages.SortOrder)
于 2009-04-19T01:29:44.830 に答える
1

これはうまくいくはずです:

UPDATE b
SET SortOrder = SortOrder - 
  (SELECT COUNT(*) FROM Deleted d WHERE d.SortOrder <= b.SortOrder)
from bk2_InfoPages b

サブクエリを実行するには、テーブルにエイリアスを付ける必要があります。次に例を示します。

-- this executes fine 
create table #t ( t int)

update t 
set t = (select count(*) from #t t1 where t.t = t1.t)
from #t t
于 2009-04-19T01:47:08.673 に答える