sql >> Database >  >> RDS >> PostgreSQL

Activeer SQL Trigger alleen wanneer een bepaalde gebruiker de rij bijwerkt

In recente Postgres-versies is er een when clausule die u kunt gebruiken om de trigger voorwaardelijk af te vuren. Je zou het als volgt kunnen gebruiken:

... when (old.* is distinct from new.*) ...

Ik ben er niet 100% van overtuigd dat deze zal werken (kan de pinautomaat niet testen):

... when (current_user = 'foo') ...

(Zo niet, probeer het dan in een if-blok in je plpgsql te plaatsen.)

http://www.postgresql.org/docs/current/static /sql-createtrigger.html

(Er is ook de [before|after] update of [col_name] syntaxis, maar ik vind het meestal minder nuttig omdat het wordt geactiveerd, zelfs als de waarde van de kolom hetzelfde blijft.)

Deze extra opmerking toevoegend, aangezien het antwoord van @CraigRinger benadrukt wat je van plan bent...

Proberen om master-master-replicatie tussen Salesforce en Postgres op te zetten met behulp van voorwaardelijke triggers is, denk ik, een droom. Vergeet het maar... Er komt veel meer bij kijken dan dat:u moet de gegevens aan beide kanten op de juiste manier vergrendelen (wat niet per se op een redelijke manier haalbaar is), de resulterende impasses beheren (die worden mogelijk niet automatisch gedetecteerd), en omgaan met conflicterende gegevens.

Uw kans om dit met een klein team succesvol voor elkaar te krijgen is ongeveer nul -- vooral als uw Postgres-vaardigheden op het niveau zijn waarop tijd investeren in het lezen van de handleiding uw eigen vragen zou beantwoorden. Je kunt er zeker van zijn dat iemand die veel competenter is bij Salesforce of een grote SQL-winkel (bijvoorbeeld degene waar Craig voor werkt) hetzelfde dacht, en ofwel jammerlijk faalde of het uitsloot.

Bovendien wil ik benadrukken dat het implementeren van efficiënte, synchrone multi-master replicatie niet . is een opgelost probleem. U leest het goed:niet opgelost. Nog maar een paar jaar geleden deed ik het helemaal was niet goed genoeg opgelost om in de kern van Postgres te komen. Je hebt dus geen stand van zaken die goed werkt om je werk op te baseren en op te herhalen.



  1. Hoe SQL-variabelen in PHP te binden?

  2. Hulpprogramma om datadictionary voor MySQL-database te maken

  3. Voeg alleen rijen in als id uit een andere tabel bestaat

  4. hoe %ROWTYPE declareren van een variabele die een zwak getypte SYS_REFCURSOR is?