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

Verhindern, dass die Tabelle gelöscht wird, wenn die Bedingungen nicht erfüllt sind

Ich gehe davon aus, dass Sie versuchen zu fragen:

In diesem Fall besteht Ihre einzige integrierte Option darin, Berechtigungen zu verwenden. Siehe GRANT und REVOKE im PostgreSQL-Handbuch.

Wenn Sie etwas Komplexeres wollen, können Sie einen ProcessUtility_hook schreiben , aber dazu müssen Sie eine Erweiterung in C schreiben, die kompiliert und auf den Server geladen wird.

Schreiben eines ProcessUtility_hook ist eigentlich nicht allzu schwierig, aber es gibt Unterschiede zwischen den PostgreSQL 9.2- und 9.3-Definitionen, die bedeuten, dass Sie separate Erweiterungen benötigen. Hier ist ein einfaches Beispiel:https://github.com/ringerc/scrapcode/ tree/master/postgresql/example_processutility_hook und hier ist ein ProcessUtility-Hook, der tatsächlich etwas Nützliches tut:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c

Wenn Sie keine C-Programmiererfahrung und etwas Zeit haben, ein ProcessUtility_hook ist nichts für dich.

Siehe auch:Wie kann verhindert werden, dass eine Tabelle gelöscht wird?