Para un diseño sensible a la seguridad, me gustaría deshabilitar DELETEs
en ciertas tablas.¿Desea desactivar DELETE en la tabla en PostgreSQL?
El DELETE
debería simplemente establecer un indicador deleted
en una fila (que luego sería visible en una vista, que sería utilizada por la capa de aplicación).
Según tengo entendido, rule generaría consultas adicionales, por lo que una regla no podría suprimir la consulta original.
Como ilustración de un ejemplo de juguete con un gatillo (aún no probado):
-- data in this table should be 'undeletable'
CREATE table article (
id serial,
content text not null,
deleted boolean default false
)
-- some view that would only show articles, that are NOT deleted
...
-- toy trigger (not tested)
CREATE OR REPLACE FUNCTION suppress_article_delete()
RETURNS TRIGGER AS $sad$
BEGIN
IF (TG_OP = 'DELETE') THEN
UPDATE article SELECT id, content, TRUE;
-- NEW or NULL??
RETURN NEW;
END IF;
RETURN NULL;
END;
$sad$ LANGUAGE plpgsql;
lo que sería una buena manera de reprimir una DELETE
?
Gracias! Me gustaría obtener este diseño * undelete * en el modelo de datos, no en la administración (revocar), así que supongo que probaré una regla 'INSTEAD'. – miku