0

SQL Anywhere 11 を使用しています。

私は次の見解を持っています:

CREATE MATERIALIZED VIEW "DBA"."PointsAcc"( /* view_column_name, ... */ )
IN "SYSTEM" AS
select sum(PL.Points) AS Sum, DP.UserUID, COUNT(*) AS cnt
FROM Points DP
KEY JOIN PointLine PL
KEY JOIN PointHead PH
GROUP BY DP.UserUID

このビューから合計を選択する必要がある PointLine にトリガーがあります。

CREATE TRIGGER "WorkOnPoints" AFTER INSERT, DELETE
ORDER 1 ON "DBA"."Points"
REFERENCING OLD AS oldrow NEW AS newrow 
FOR EACH ROW
BEGIN
    declare @points integer;
    set @points = (isnull((select isnull(Sum, 0)) FROM PointsAcc where UserUID = newrow.UserUID), 0)) 
END;

@points 変数には、行が挿入または削除される前の合計が含まれるようになりました。トリガーのビューから更新された合計を取得するにはどうすればよいですか?

4

1 に答える 1

1

現在使用しているSQLAのバージョンによって異なります。

即時更新オプションを使用してビューを作成しなかった場合は、を呼び出す必要があります

REFRESH MATERIALIZED VIEW view-list

詳細については、これらのリンクをチェックしてください

http://dcx.sybase.com/index.html#1201/en/dbreference/alter-materialized-view-statement.html

http://dcx.sybase.com/1201/en/dbreference/refresh-materialized-view-statement.html

于 2012-05-23T15:37:17.967 に答える