Ich möchte einer sehr großen Tabelle eine Prüfbedingung hinzufügen. Etwas wie:
ALTER TABLE "accounts" ADD CONSTRAINT "positive_balance" CHECK ("balance" >= 0);
Leider blockiert PostgreSQL 9.3 Lese- oder Schreibvorgänge, bis die Einschränkungsprüfung abgeschlossen ist. Ich habe dies überprüft, indem ich eine Transaktion gestartet, die ausgeführt ALTER TABLE
, dann eine zweite Transaktion geöffnet und überprüft habe, ob ich bis zum Abschluss der ersten Transaktion nicht aus der Tabelle lesen oder schreiben konnte.
Kann ich diese CHECK
Einschränkung auf irgendeine Weise hinzufügen , ohne die Tabelle zu sperren?