MySQLを残してPostgreSQLを支持しましたが、トリガーに関して質問があります。このトリガーは、「プロセス」テーブルの行が削除された場合に「ワークフロー」テーブルのフィールドを更新するように設計されています。
CREATE OR REPLACE FUNCTION fn_process_delete() RETURNS TRIGGER AS $$
BEGIN
UPDATE workflow SET deleted_process_name = OLD.process_name
WHERE process_id = OLD.process_id;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
DROP TRIGGER IF EXISTS process_delete ON processes;
CREATE TRIGGER process_delete
AFTER DELETE ON processes
FOR EACH ROW
EXECUTE PROCEDURE fn_process_delete();
私の質問は2つあります。
上記のようにAFTERDELETEを使用すると、行は削除されますが、updateステートメントは「ワークフロー」テーブルのフィールドを更新しません。
BEFORE DELETEを使用すると、プロセステーブルは削除をまったく実行せず、「この行に一意の識別子がありません」というエラーが表示されます。
誰かアドバイスできますか?