PostgresQL Delete Trigger does not delete row
Inheritance could be a useful tool, but for now it has its many flaws, as you noticed.
So you should dismiss it, if the system don't react to the way you think


create table test
(
    id                  serial primary key,
    name                varchar(128) not null
);




create table test_archive
(
    id                  serial primary key,
    name                varchar(128) not null
);




CREATE OR REPLACE FUNCTION archive_record()
RETURNS TRIGGER AS $$
BEGIN
    RAISE NOTICE 'Running trigger';
    EXECUTE format('INSERT INTO %I.%I SELECT $1.*', TG_TABLE_SCHEMA, (TG_TABLE_NAME || '_archive'))
    USING OLD;
    RETURN NULL;
END;
$$ LANGUAGE PLPGSQL;




CREATE TRIGGER delete_test
    AFTER DELETE
    ON test
    FOR EACH ROW
    EXECUTE PROCEDURE archive_record();




insert into test values (1,'test1'),(2,'test2')


2 rows affected




DELETE FROM test WHERE id = 1


1 rows affected




SELECT * FROM test_archive


id | name 
-: | :----
 1 | test1




SELECT * FROM test


id | name 
-: | :----
 2 | test2


db&lt;&gt;fiddle here