PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann das Löschen der ersten Zeile in der Tabelle (PostgreSQL) verhindert werden?

Sie hatten recht, als Sie an das Regelsystem dachten. Hier ist ein Link zu einem Beispiel, das zu Ihrem Problem passt. Es ist sogar noch einfacher als die 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;

Einige Antworten übersehen einen Punkt:Auch die Aktualisierung der geschützten Zeile muss eingeschränkt werden. Andernfalls kann man zuerst die geschützte Zeile so aktualisieren, dass sie das Kriterium des verbotenen Löschens nicht mehr erfüllt, und dann kann man die aktualisierte Zeile löschen, da sie nicht mehr geschützt ist.