0
次のトリガーで問題が発生します。Oracleトリガーが読み取られない
このページへの訪問をカウントし、私の手順です:
create or replace procedure VisitSport(idN in number)
is
v1 number := idN;
vc number;
begin
select s.VISITAS into vc from Sports s where s.IDSPORTS=v1;
update Sports set VISITAS = vc +1 where IDSPORTS=v1;
end;
これは、この操作がランキング
create or replace trigger trg_RankingSp
after insert or update on Sports
for each row
begin
update SPORTS set RANKING = visitas/cuenta;
end;
を算出することができる私のトリガーである。得点は
create or replace PROCEDURE RankingSports(vnumber in number, vid in number)
is
v1 number := vnumber;
v2 number := vid;
v3 number;
begin
select CNT into v3 from SPORTS where IDSPORTS = v2;
update SPORTS set CNT= v3+v1 where IDSPORTS = v2;
end;
を取っています
これは、トリガーが実行されたときに発生するエラーです。
トリガ(又は でこの文を参照するユーザ定義PLSQL関数)を見て(または変更)するためにそれを焼成文によって変更された中央に たテーブルを試みました。 *処置:トリガー(または関数)を書き換えて、その表を読み取らないようにしてください。
SPORTSテーブルのCNT列は、実際にはCUENTA – Anthony
と呼ばれます。「スポーツ」テーブルのサンプルデータを提供できますか、挿入や更新後に何が期待されますか? – Utsav
基本的な答えは「トリガーを実行して、トリガーの基になっているテーブルを更新することはできません」です。これを突然変異表エラーと呼びます。 ":new.ranking:=:new.visitas /:new.cuenta"を使って、構文を使って正しい答えを投稿した人物です。また、cuentaがゼロのため、代入の前にifステートメントを実行しなければならないということも正しいです、あなたは0/nullの問題で除算を持つでしょう。 –