Ich habe eine Anforderung, dass ich das Löschen von Tabellensätzen für alle Benutzer mit Ausnahme eines Benutzers deaktivieren muss, d. H. Benutzer1. Also habe ich Trigger verwendet, die wie folgt sind.Verhindern Löschen von Tabellensätzen für einen Benutzer und Löschen einer anderen in PostgreSQL
CREATE OR REPLACE FUNCTION prevent_deletion() RETURNS trigger AS $$
declare
cur_user varchar(30);
BEGIN
Select current_user into cur_user;
IF cur_user != 'user1' THEN
RAISE EXCEPTION 'You cannot delete records from this table!';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Der Trigger wird verhindert Tabellensätze für Löschen von Benutzern andere als user1 was in Ordnung ist, aber es ist nicht für Benutzer user1 arbeiten. Ich meine, es löscht die Tabellensätze für Benutzer1 nicht.
Wo bin ich falsch in meinem Code?
Vielen Dank im Voraus.
was ist postgres version? –
https://www.postgresql.org/docs/9.5/static/sql-createpolicy.html Achten Sie auf Sicherheit auf Zeilenebene –
@VaoTsun seine 9.5 – Suniel