sql >> Databáze >  >> RDS >> PostgreSQL

Posun (aktualizace) jedinečných hodnot sloupců v PostgreSQL

To je skutečně trochu matoucí, protože všechna ostatní omezení jsou vyhodnocována na úrovni příkazů, pouze omezení PK/jedinečné jsou vyhodnocovány na úrovni řádků během operací DML.

Ale můžete to obejít tím, že deklarujete omezení primárního klíče jako odložitelné:

create table tbl_test 
(
  testkey   INTEGER,
  constraint pk_tbl_test primary key (testkey) deferrable initially immediate
);

insert into tbl_test values (1), (2);

set constraints all deferred;

update tbl_test
   set testkey = testkey +1;

Odložená omezení mají určitou režii, takže pokud je definujete jako initially immediate tato režie je omezena na minimum. Vyhodnocení omezení můžete odložit, když to potřebujete, pomocí set constraint .

Skutečná otázka však zní:proč byste to měli dělat s hodnotou primárního klíče? Hodnoty PK nemají žádný význam, takže se zdá být spíše zbytečné zvyšovat všechny hodnoty (bez ohledu na použitý DBMS)



  1. Jak mohu znovu použít mezery v sekvencích Oracle ve sloupci primárního klíče?

  2. Připojení Java ke Cloud SQL 2nd Gen z Appengine Managed VM

  3. Python SQLAlchemy - MySQL server odešel

  4. PHP Seznam uživatelů z SQL databáze v tabulce