PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come impedire la cancellazione della prima riga nella tabella (PostgreSQL)?

Avevi ragione a pensare al sistema di regole. Ecco un collegamento a un esempio che corrisponde al tuo problema. È ancora più semplice dei trigger:

create rule protect_first_entry_update as
  on update to your_table
  where old.id = your_id
  do instead nothing;
create rule protect_first_entry_delete as
  on delete to your_table
  where old.id = your_id
  do instead nothing;

Ad alcune risposte manca un punto:anche l'aggiornamento della riga protetta deve essere limitato. Altrimenti si può prima aggiornare la riga protetta in modo che non soddisfi più il criterio di eliminazione vietata, quindi si può eliminare la riga aggiornata poiché non è più protetta.