ある課題で、タグ付けされた質問とコメント付きの回答を備えた非常に単純な Q/A サイトを作成する任務を負っています。
要件の 1 つは、重複するタグの挿入を検出するトリガーを用意することです。そのような場合は、既存のタグの使用カウンターをインクリメントします。
問題は、を含むトランザクション全体をロールバックしてトリガーをキャンセルできず、トリガーUPDATE
の目的が無効になることです。
それをやってのける方法についてのアイデアはありますか?
アップデート
要件は次のように表現されます。
"追加するタグがデータベースに存在しないかどうかをチェックするトリガーを作成します。存在する場合は、対応する行の使用列を 1 増やす必要があります"
(原文: " Crear el trigger tg_insertar_tag
que revise que cualquier nuevo tag que se agregue no exista antes en la base de datos ; en caso de existir, se debe incremental en 1 la columna “usos” de la tabla tag del registro que Corresponda ")
この要件を変更または回避することはできませんが、抜け穴は歓迎されます。
参考までに、私の現在のトリガーコード:
CREATE OR REPLACE TRIGGER tg_insertar_tag BEFORE INSERT ON Tag
FOR EACH ROW
DECLARE
tagCount integer;
v_usos integer;
BEGIN
SELECT COUNT(*) INTO tagCount FROM Tag WHERE nombre = :new.nombre;
SELECT Usos INTO v_usos FROM Tag WHERE nombre = :new.nombre;
IF tagCount > 0 THEN
UPDATE Tag SET usos = v_usos + 1 WHERE nombre = :new.nombre;
ELSE
:new.usos := 1;
END IF;
END;