sql >> Database >  >> RDS >> PostgreSQL

tuple gelijktijdig bijgewerkt bij het maken van functies in postgresql / PL/pgSQL

Zoals beschreven hier , postgres staat u momenteel niet toe om CREATE FUNCTION te gebruiken gelijktijdig:

Een oplossing hiervoor is ervoor te zorgen dat geen twee transacties de CREATE FUNCTION . proberen uit te voeren tegelijkertijd.

U kunt posgres adviessloten . gebruiken daarvoor.

Een goede introductie tot adviserende sloten vindt u hier:https://vladmihalcea .com/how-do-postgresql-advisory-locks-work/

U kunt bijvoorbeeld het volgende gebruiken:

BEGIN; -- start of transaction

SELECT pg_advisory_xact_lock(2142616474639426746); -- random 64-bit signed ('bigint') lock number

CREATE OR REPLACE FUNCTION myfunction ...

COMMIT;

Hiervoor is een exclusieve adviesvergrendeling op transactieniveau nodig, zodat er geen twee gelijktijdige transacties tegelijkertijd kunnen worden uitgevoerd. Aan het einde van de transactie wordt het slot automatisch vrijgegeven.




  1. SQL DROP-index, DROP-tabel en DROP-databaseverklaringen uitgelegd met voorbeelden

  2. Hoe verander ik alle lege strings in NULL in een tabel?

  3. MySql.Data in GAC, nog steeds SecurityException

  4. Een tijdelijke tabel maken in Oracle SQL