ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

TRIGGERコマンド

TRIGGERコマンドは、作成済のプログラムをオブジェクトに関連付け、プログラムを自動で実行するオブジェクト・イベントを識別したり、オブジェクトとトリガー・プログラムの関連付けを解除したりするコマンドです。

トリガー・プログラムをオブジェクトに割り当てるには、オブジェクトは最新の定義のもの、または現行のセッション中に検討されたものにする必要があります。そうでない場合は、最初にCONSIDER文を使用し、現行の定義にする必要があります。

構文

TRIGGER {event-name [program-name] }... | {DELETE event-name}... | DELETE ALL

ここで、event-nameは次のいずれかです。

MAINTAIN
DELETE
PROPERTY
ASSIGN
BEFORE_UPDATE
AFTER_UPDATE

1つのTRIGGER文には同じキーワードを何回でも使用できますが、この場合、Oracle OLAPは最後に使用したキーワード以外はすべて無視します。詳細は、「同じキーワードの複数回の記述」を参照してください。

パラメータ

MAINTAIN

プログラムのトリガーをMaintainイベントにすることを指定します。Maintainイベントとは、MAINTAIN文の実行のことです。表8-19「MAINTAINイベントのサブイベント」に概要を示すように、Maintainイベントには、MAINTAINコマンドの主要キーワードに対応する複数のサブイベントがあります。Maintainイベントによってトリガーされるプログラムが実行される正確なタイミングは、プログラムをトリガーするMaintainサブイベントと、Maintainイベントの定義の対象となるオブジェクト・タイプによって決まります。

  • ディメンションおよびコンポジットのMaintain AddイベントおよびMaintain Mergeイベントによってトリガーされるプログラムは、全体のMAINTAIN文が実行されたに実行されます。

  • ディメンション・サロゲートのMaintain AddイベントおよびMaintain Mergeイベントによってトリガーされるプログラムは複数回、つまりそれぞれの値が追加またはマージされたに1回ずつ実行されます。

  • その他のMaintainサブイベントによってトリガーされるプログラムは、MAINTAIN文の実行に実行されます。

DELETE

プログラムのトリガーをDeleteイベントにすることを指定します。Deleteイベントとは、オブジェクトに対するDELETE文のことです。Oracle OLAPでは、DELETE文によってオブジェクトが削除される直前に、指定のプログラムが実行されます。

PROPERTY

Oracle OLAPがPropertyイベントに応答して指定のプログラムを実行することを指定します。Propertyイベントとは、オブジェクト・プロパティの作成、変更または削除を目的とするPROPERTY文の実行のことです。Propertyイベントによってトリガーされたプログラムは、このプログラムをトリガーした文より先に実行されます。

ASSIGN

Oracle OLAPがAssignイベントに応答して指定のプログラムを実行することを指定します。Assignイベントは、SETによって値が変数、リレーション、ワークシート・オブジェクトまたは計算式に代入されると実行されます。SETによってトリガーされるプログラムは、イベントが定義されたオブジェクトにOracle OLAPが値を代入するたびに実行されます。このため、Assignイベントでトリガーされるプログラムは通常、代入文がオブジェクトをループ処理して値を代入するときに繰り返し実行されます。

UPDATE

マルチライタ・モードでアタッチされているアナリティック・ワークスペースで、ACQUIREを使用してオブジェクトを取得した場合は、このオブジェクトの更新後、指定のプログラムがOracle OLAPによってただちに実行されることを指定します。


ヒント:

アナリティック・ワークスペース全体を更新するときの処理を指定するには、TRIGGER_AFTER_UPDATEプログラムまたはTRIGGER_BEFORE_UPDATEプログラムを作成します。

program-name

トリガー・プログラムの名前。イベントに対してこの名前を省略した場合、そのイベントはアクションをトリガーしません。

DELETE event-name

指定したオブジェクト・イベントのトリガーを削除します。Oracle OLAPは、指定したオブジェクト・イベントとトリガー・プログラムとの関連付けを解除します。

DELETE ALL

指定したオブジェクトのトリガーをすべて削除します。Oracle OLAPは、オブジェクトのすべてのイベントとトリガー・プログラムとの関連付けを解除します。

使用上の注意

同じキーワードの複数回の記述

1つのTRIGGER文には、すべてのキーワードを使用できます。ただし、1つのTRIGGER文に同じキーワードを2回使用すると、最後に使用したキーワードのみが認識され、もう一方のキーワードは無視されます。

たとえば、次のTRIGGER文を記述した場合を考えます。

TRIGGER PROPERTY progname1 PROPERTY progname2 PROPERTY progname3

このTRIGGER文を実行すると、Oracle OLAPは、オブジェクトのプロパティが作成、変更または削除される直前にprogname3を実行します。つまり、Oracle OLAPはprogname1progname2のいずれも実行しません

例10-159 トリガーの作成

アナリティック・ワークスペースにcityというTEXTディメンションが格納されており、cityに対してMAINTAIN文が実行されるか、cityのプロパティが作成または削除されると自動的に実行されるプログラムを作成するとします。これらのトリガーを作成するには、次の文を発行します。

"Define the trigger programs
DEFINE trigger_maintain_move_city PROGRAM BOOLEAN
DEFINE trigger_property_city PROGRAM BOOLEAN
"Associate the trigger programs to events for the city dimension
CONSIDER city
TRIGGER PROPERTY trigger_property_city
TRIGGER MAINTAIN trigger_maintain_move_city

例10-160 トリガーの説明

例10-159「トリガーの作成」で説明したように、cityに対してトリガーを作成した場合を考えます。後でトリガーの説明を参照するため、アナリティック・ワークスペースに対してDESCRIBE文を発行することはできません。そうではなく、FULLDSC文を発行する必要があります。

DEFINE CITY DIMENSION TEXT
TRIGGER MAINTAIN TRIGGER_MAINTAIN_MOVE_CITY -
        PROPERTY TRIGGER_PROPERTY_CITY
 
DEFINE TRIGGER_MAINTAIN_MOVE_CITY PROGRAM BOOLEAN
 
DEFINE TRIGGER_PROPERTY_CITY PROGRAM BOOLEAN

例10-161 トリガーの削除

例10-159「トリガーの作成」で説明したトリガーを作成した場合を考えます。今度はcityのMAINTAINトリガーを削除します。このトリガーを削除するには、次の文を発行します。

CONSIDER city
TRIGGER DELETE MAINTAIN
 

FULLDSC文を発行したら、cityのMAINTAINトリガーは削除されているが、trigger_maintain_move_cityプログラムは残っていることを確認します。

DEFINE CITY DIMENSION TEXT
TRIGGER PROPERTY TRIGGER_PROPERTY_CITY
 
DEFINE TRIGGER_MAINTAIN_MOVE_CITY PROGRAM BOOLEAN
 
DEFINE TRIGGER_PROPERTY_CITY PROGRAM BOOLEAN

trigger_maintain_move_cityプログラムを実際に削除するには、次の文を発行する必要があります。

DELETE TRIGGER_MAINTAIN_MOVE_CITY 

例10-162 MAINTAINトリガー・プログラム

アナリティック・ワークスペースに、次のような定義を持つディメンションがあるとします。

DEFINE CITY DIMENSION TEXT
 

cityに対してMaintainトリガーを作成する手順は、次のとおりです。

  1. トリガー・プログラムをユーザー定義ファンクションとして定義します。このプログラムには、名前を自由に付けることができます。次の文では、trigger_maintain_cityという名前のプログラムが定義されます。

    DEFINE trigger_maintain_city PROGRAM BOOLEAN
     
    
  2. プログラムの内容を指定します。

    PROGRAM
    SHOW JOINCHARS ('calltype = ' CALLTYPE)
    SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
    SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
    RETURN TRUE
    END
     
    
  3. TRIGGER文を発行し、Maintainイベントが発生したら実行されるプログラムとして、トリガー・プログラムとcityディメンションを関連付けます。CONSIDER文を使用して、cityの定義を現行の定義にすることを忘れないでください。

    CONSIDER city
    TRIGGER MAINTAIN TRIGGER_MAINTAIN_CITY
    

アナリティック・ワークスペースの完全な詳細を参照するためにFULLDSC文を発行すると、cityの定義(そのMaintainトリガーを含む)やtrigger_maintain_cityプログラムを参照できます。

DEFINE CITY DIMENSION TEXT
TRIGGER MAINTAIN TRIGGER_MAINTAIN_CITY
 
DEFINE TRIGGER_MAINTAIN_CITY PROGRAM BOOLEAN
PROGRAM
SHOW JOINCHARS ('calltype = ' CALLTYPE)
SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
RETURN TRUE
END
 

次の文および出力に示すように、cityに対してMAINTAIN文を発行すると、trigger_maintain_cityプログラムが実行されます。

MAINTAIN city ADD 'Boston' 'Houston' 'Dallas'

calltype = TRIGGER
triggering event = MAINTAIN
triggering subevent = ADD
 
REPORT city
 
CITY
--------------
Boston
Houston
Dallas
 
MAINTAIN city MOVE 'Dallas' to 2

calltype = TRIGGER
triggering event = MAINTAIN
triggering subevent = MOVE
 
REPORT city
 
CITY
--------------
Boston
Dallas
Houston

例10-163 変数のASSIGNトリガー

アナリティック・ワークスペースに次の定義を持つオブジェクトが格納されているとします。

DEFINE geog DIMENSION TEXT
DEFINE sales VARIABLE DECIMAL <geog>
DEFINE percent_sales VARIABLE INTEGER <geog>
 

sales変数には、次の値が格納されています。

GEOG             SALES
-------------- ----------
North America        0.59
Europe               9.35
Asia                   NA

percent_sales変数は空です。

値をpercent_salesに代入したら、値に特殊な処理をするとします。この処理を自動化するには、次の手順に従って、percent_salesのAssignトリガー・プログラムを作成します。

  1. 値をpercent_salesに代入するたびに実行されるトリガー・プログラムを作成します。

    DEFINE TRIGGER_EQ PROGRAM BOOLEAN
    PROGRAM
    ARGUMENT datavalue WORKSHEET
    show 'description of triggering object = ' 
    FULLDESCRIBE &TRIGGER(NAME)
    SHOW JOINCHARS ('calltype = ' CALLTYPE)
    SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
    SHOW JOINCHARS ('triggering subevent = ' TRIGGER(SUBEVENT))
    SHOW JOINCHARS ('value being assigned = ' datavalue)
    SHOW '  '
    END
     
    
  2. TRIGGER文を使用して、Assignトリガーをpercent_salesに追加します。最初にCONSIDER文を発行して、percent_sales変数の定義を現行の定義にすることを忘れないでください。

    CONSIDER percent_sales
    TRIGGER ASSIGN TRIGGER_EQ
    
  3. 値をpercent_salesに代入します。

    percent_sales = (sales/TOTAL(sales))*100
    

    値をpercent_salesに代入すると、trigger_eqプログラムの実行がトリガーされ、次の出力行が生成されます。

    description of triggering object = 
    DEFINE PERCENT_SALES VARIABLE INTEGER <GEOG>
    TRIGGER ASSIGN TRIGGER_EQ
    calltype = TRIGGER
    triggering event = ASSIGN
    triggering subevent = 
    value being assigned = 6
    
    description of triggering object = 
    DEFINE PERCENT_SALES VARIABLE INTEGER <GEOG>
    TRIGGER ASSIGN TRIGGER_EQ
    calltype = TRIGGER
    triggering event = ASSIGN
    triggering subevent = 
    value being assigned = 94
    
    description of triggering object = 
    DEFINE PERCENT_SALES VARIABLE INTEGER <GEOG>
    TRIGGER ASSIGN TRIGGER_EQ
    calltype = TRIGGER
    triggering event = ASSIGN
    triggering subevent = 
    value being assigned = 
    

    注意:

    出力から、Oracle OLAPがtrigger_eqプログラムを3回コールしていることがわかります。そのたびに値がpercent_salesに代入されます。

  4. salesおよびpercent_salesに対してREPORTコマンドを発行すると、計算の結果を参照できます。percent_sales変数には、大陸ごとの売上比率を表す値が格納されています。

    GEOG                  SALES
    -------------- --------------------
    North America                  0.59
    Europe                         9.35
    Asia                             NA
     
    GEOG              PERCENT_SALES
    -------------- --------------------
    North America                     6
    Europe                           94
    Asia                             NA
    

例10-164 ASSIGNトリガー・プログラムでの値の設定

アナリティック・ワークスペースに次のオブジェクトがあるとします。

DEFINE GEOGRAPHY DIMENSION TEXT WIDTH 12
LD Geography Dimension Values
 
DEFINE PRODUCT DIMENSION TEXT WIDTH 12
LD Product Dimension Values
 
DEFINE TIME DIMENSION TEXT WIDTH 12
LD Time Dimension Values
 
DEFINE CHANNEL DIMENSION TEXT WIDTH 12
LD Channel Dimension Values
 
DEFINE F.MARGIN FORMULA DECIMAL <CHANNEL GEOGRAPHY PRODUCT TIME>
LD Margin
EQ f.sales-f.costs
 
 
DEFINE F.COSTS VARIABLE SHORT <GEOGRAPHY PRODUCT CHANNEL TIME>
LD Costs
 
DEFINE F.SALES VARIABLE SHORT <GEOGRAPHY PRODUCT CHANNEL TIME>
LD Sales
 

f.costsf.salesおよびf.marginのディメンションは、すべて同じです。

ここで、t.marginというプログラムを実行するf.marginにAssignトリガーを追加します。f.marginの定義は次の定義に変更されます。

DEFINE F.MARGIN FORMULA DECIMAL <CHANNEL GEOGRAPHY PRODUCT TIME>
LD Margin
TRIGGER ASSIGN T.MARGIN
EQ f.sales-f.costs

今度は、t.marginプログラムを実際に作成します。f.margin計算式に式を代入すると、このプログラム(計算式)は、この値を使用してf.costsおよびf.salesの新しい値を計算します。

DEFINE T.MARGIN PROGRAM
PROGRAM
ARG newVal DECIMAL       " The value passed to the program by the Assign trigger
VARIABLE t.valDiff DECIMAL     " Difference between newVal and old value
VARIABLE t.costInc DECIMAL     " Amount the difference makes to costs
"show the value of newVal
SHOW 'newVal = ' NONL
SHOW newVal
" Compute the difference between the current value and the new one
t.valDiff = newVal - f.margin
" Now increase costs proportional to their existing amounts
t.costInc = (newVal - f.margin) * (f.costs/f.sales)
" Adjust the values of sales and costs to get the new value
SET1 f.costs = f.costs + t.costInc
 
SET1 f.sales =  f.sales + t.valDiff + t.costInc
 
SHOW geography NONL
SHOW ' ' NONL
SHOW product NONL
SHOW ' ' NONL
SHOW channel NONL
SHOW ' ' NONL
SHOW time NONL
SHOW ' f.costs = 'NONL
SHOW f.costs NONL
SHOW ' f.sales = 'NONL
SHOW f.sales
END
 

ここで、次のLIMIT文を発行してデータのサブセットを指定し、REPORT文を発行してf.marginの値に関するレポートを作成するとします。

LIMIT t0.hierdim TO 'STANDARD'
LIMIT time TO t0.levelrel EQ 'L2'
LIMIT geography TO FIRST 1
LIMIT channel TO FIRST 1
LIMIT product TO FIRST 5
REPORT DOWN time ACROSS product: f.margin
 
GEOGRAPHY: WORLD
CHANNEL: TOTALCHANNEL
               -----------------------F.MARGIN-----------------------
               -----------------------PRODUCT------------------------
TIME           TOTALPROD   AUDIODIV  PORTAUDIO    PORTCD     PORTST
-------------- ---------- ---------- ---------- ---------- ----------
Q1.96          54,713,974 29,603,546  5,379,661  2,480,914  1,615,708
Q2.96          63,919,784 34,594,087  6,331,848  2,869,265  1,931,785
Q3.96          58,303,490 31,543,152  5,792,725  2,616,515  1,795,701
Q4.96          71,197,892 38,383,878  7,059,581  3,163,804  2,232,880
Q1.97          55,489,723 29,989,262  5,368,237  2,491,475  1,607,344
Q2.97          41,687,908 22,532,979  4,070,725  1,855,992  1,245,161
 

今度は、f.marginの値を10%ずつ増加する次の代入文を発行し、レポートを作成します。

f.margin = f.margin * 1.1

この代入文の実行により、t.marginというAssignトリガー・プログラムの実行がトリガーされます。このプログラムの出力は次のとおりです。

newVal = 60,185,371.40
WORLD TOTALPROD TOTALCHANNEL Q1.96 f.costs = 1,298,474.00 f.sales = 61,483,840.00
newVal = 32,563,900.67
WORLD AUDIODIV TOTALCHANNEL Q1.96 f.costs = 664,226.90 f.sales = 33,228,130.00
newVal = 5,917,626.67
WORLD PORTAUDIO TOTALCHANNEL Q1.96 f.costs = 97,976.04 f.sales = 6,015,603.00
newVal = 2,729,005.43
WORLD PORTCD TOTALCHANNEL Q1.96 f.costs = 34,301.53 f.sales = 2,763,307.00
newVal = 1,777,278.95
WORLD PORTST TOTALCHANNEL Q1.96 f.costs = 25,160.72 f.sales = 1,802,440.00
newVal = 70,311,762.13
WORLD TOTALPROD TOTALCHANNEL Q2.96 f.costs = 1,504,051.00 f.sales = 71,815,820.00
newVal = 38,053,495.70
WORLD AUDIODIV TOTALCHANNEL Q2.96 f.costs = 768,788.10 f.sales = 38,822,280.00
newVal = 6,965,032.86
WORLD PORTAUDIO TOTALCHANNEL Q2.96 f.costs = 114,558.20 f.sales = 7,079,591.00
newVal = 3,156,191.20
WORLD PORTCD TOTALCHANNEL Q2.96 f.costs = 39,256.88 f.sales = 3,195,448.00
newVal = 2,124,963.02
WORLD PORTST TOTALCHANNEL Q2.96 f.costs = 29,780.54 f.sales = 2,154,744.00
newVal = 64,133,838.86
WORLD TOTALPROD TOTALCHANNEL Q3.96 f.costs = 1,350,733.00 f.sales = 65,484,570.00
newVal = 34,697,467.06
WORLD AUDIODIV TOTALCHANNEL Q3.96 f.costs = 691,887.10 f.sales = 35,389,360.00
newVal = 6,371,997.63
WORLD PORTAUDIO TOTALCHANNEL Q3.96 f.costs = 103,203.70 f.sales = 6,475,202.00
newVal = 2,878,166.40
WORLD PORTCD TOTALCHANNEL Q3.96 f.costs = 35,358.18 f.sales = 2,913,525.00
newVal = 1,975,270.68
WORLD PORTST TOTALCHANNEL Q3.96 f.costs = 27,339.77 f.sales = 2,002,611.00
newVal = 78,317,681.06
WORLD TOTALPROD TOTALCHANNEL Q4.96 f.costs = 1,618,915.00 f.sales = 79,936,590.00
newVal = 42,222,265.94
WORLD AUDIODIV TOTALCHANNEL Q4.96 f.costs = 826,923.40 f.sales = 43,049,190.00
newVal = 7,765,539.34
WORLD PORTAUDIO TOTALCHANNEL Q4.96 f.costs = 123,269.50 f.sales = 7,888,809.00
newVal = 3,480,184.35
WORLD PORTCD TOTALCHANNEL Q4.96 f.costs = 41,998.90 f.sales = 3,522,183.00
newVal = 2,456,168.00
WORLD PORTST TOTALCHANNEL Q4.96 f.costs = 33,357.19 f.sales = 2,489,525.00
newVal = 61,038,695.03
WORLD TOTALPROD TOTALCHANNEL Q1.97 f.costs = 1,423,963.00 f.sales = 62,462,660.00
newVal = 32,988,187.65
WORLD AUDIODIV TOTALCHANNEL Q1.97 f.costs = 679,477.80 f.sales = 33,667,660.00
newVal = 5,905,060.56
WORLD PORTAUDIO TOTALCHANNEL Q1.97 f.costs = 158,854.40 f.sales = 6,063,915.00
newVal = 2,740,622.56
WORLD PORTCD TOTALCHANNEL Q1.97 f.costs = 53,144.41 f.sales = 2,793,767.00
newVal = 1,768,078.14
WORLD PORTST TOTALCHANNEL Q1.97 f.costs = 40,784.62 f.sales = 1,808,863.00
newVal = 45,856,698.46
WORLD TOTALPROD TOTALCHANNEL Q2.97 f.costs = 1,070,465.00 f.sales = 46,927,160.00
newVal = 24,786,276.35
WORLD AUDIODIV TOTALCHANNEL Q2.97 f.costs = 512,435.60 f.sales = 25,298,710.00
newVal = 4,477,797.64
WORLD PORTAUDIO TOTALCHANNEL Q2.97 f.costs = 118,791.70 f.sales = 4,596,590.00
newVal = 2,041,591.56
WORLD PORTCD TOTALCHANNEL Q2.97 f.costs = 39,287.77 f.sales = 2,080,879.00
newVal = 1,369,677.57
WORLD PORTST TOTALCHANNEL Q2.97 f.costs = 30,038.08 f.sales = 1,399,716.00

例10-165 計算式に関するASSIGNトリガー

Oracle OLAPが値の計算式への代入をどのように処理するかは、Assignトリガーが計算式の定義の一部として計算式に存在するかどうかによって異なります。

アナリティック・ワークスペースに次の定義と値を持つオブジェクトが格納されているとします。

DEFINE geog.d DIMENSION TEXT
DEFINE time.d DIMENSION TEXT
DEFINE sales VARIABLE DECIMAL <time.d geog.d>
DEFINE f_modified_sales FORMULA DECIMAL <time.d geog.d>
  EQ sales+20
 

salesのレポートでは、ベース値が表示されます。

               -------------------SALES-------------------
               ------------------TIME.D-------------------
GEOG.D          Jan2004    Feb2004    Mar2004      2004
-------------- ---------- ---------- ---------- ----------
Boston               4.00       4.66       5.91       NA
Medford              4.37       5.80       4.45       NA
San Diego            4.97       5.95       4.75       NA
Sunnydale            5.85       5.26       4.08       NA

f_modified_sales計算式のレポートでは、この計算式によって計算された値が含まれる次のレポートが表示されます。

               -------------F_MODIFIED_SALES--------------
               ------------------TIME.D-------------------
GEOG.D          Jan2004    Feb2004    Mar2004      2004
-------------- ---------- ---------- ---------- ----------
Boston              24.00      24.66      25.91         NA
Medford             24.37      25.80      24.45         NA
San Diego           24.97      25.95      24.75         NA
Sunnydale           25.85      25.26      24.08         NA

f_modified_sales計算式には、現在、これに関するAssignトリガーは存在しません。したがって、次のコードに示すように、f_modified_salesに値を代入しようとすると、エラーが発生します。

f_modified_sales = 3
ORA-34142: You cannot assign values to a FORMULA.

f_modified_salesのAssignトリガーを作成する手順は、次のとおりです。

  1. トリガー・プログラムを定義します。

    DEFINE TRIGGER_ASSIGN_MODIFIED_SALES PROGRAM
    PROGRAM
    ARGUMENT datavalue NUMBER
    SHOW 'description of triggering object = '
    DESCRIBE &TRIGGER(NAME)
    SHOW JOINCHARS ('calltype = ' CALLTYPE)
    SHOW JOINCHARS ('triggering event = ' TRIGGER(EVENT))
    SHOW JOINCHARS ('value being assigned = ' datavalue)
    SHOW '  '
    END
     
    
  2. 次の文を使用して、Assignトリガーを計算式の定義に追加します。

    CONSIDER f_modified_sales
    TRIGGER ASSIGN trigger_assign_modified_sales
     
    

    FULLDSC f_modified_sales文を発行すると、f_modified_salesの新しい定義がすべて表示されます。

    DEFINE F_MODIFIED_SALES FORMULA DECIMAL <TIME.D GEOG.D>
    TRIGGER ASSIGN TRIGGER_ASSIGN_MODIFIED_SALES
    EQ sales+20
    
  3. 次の文を発行してf_modified_salesに値を代入しても、今度はエラーが発生しません。かわりに、trigger_assign_modified_salesトリガー・プログラムが、salesのディメンション値ごとに1回ずつ、計16回実行されます。

    f_modified_sales = 3
     
    description of triggering object = 
    DEFINE F_MODIFIED_SALES FORMULA DECIMAL <TIME.D GEOG.D>
    TRIGGER ASSIGN TRIGGER_ASSIGN_MODIFIED_SALES
    EQ sales+20
    calltype = TRIGGER
    triggering event = ASSIGN
    value being assigned = 3.00
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ... 
    description of triggering object = 
    ...
     
    
  4. ただし、次に示すように、f_modified_salesについてREPORT文を発行すると、計算式を単純に実行することによって計算される値は変更されていないことがわかります。

    report f_modified_sales
    
                   -------------F_MODIFIED_SALES--------------
                   ------------------TIME.D-------------------
    GEOG.D          Jan2004    Feb2004    Mar2004      2004
    -------------- ---------- ---------- ---------- ----------
    Boston              24.00      24.66      25.91         NA
    Medford             24.37      25.80      24.45         NA
    San Diego           24.97      25.95      24.75         NA
    Sunnydale           25.85      25.26      24.08         NA