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

OMEZENÍ pro kontrolu hodnot ze vzdáleně související tabulky (přes spojení atd.)

CHECK omezení nemohou aktuálně odkazovat na jiné tabulky. Manuál:

Aktuálně CHECK výrazy nemohou obsahovat poddotazy ani odkazovat na jiné položky než sloupce aktuálního řádku.

Jedním ze způsobů je použití spouštěče, jak to předvedl @Wolph.

Čisté řešení bez spouštěčů :přidat nadbytečné sloupce a zahrnout je do FOREIGN KEY omezení , které jsou první volbou k vynucení referenční integrity. Související odpověď na dba.SE s podrobnými pokyny:

  • Vynucování omezení „o dva stoly dál“

Další možností by bylo "předstírat" IMMUTABLE funkce proveďte kontrolu a použijte ji v CHECK omezení. Postgres to umožní, ale dejte si pozor na možná upozornění. Nejlepší je, aby to bylo NOT VALID omezení. Viz:

  • Při obnově výpisu deaktivujte všechna omezení a kontroly tabulek


  1. SQL Server DATEPART() vs DATENAME() – Jaký je rozdíl?

  2. MySQL:Vyberte náhodný záznam, ale váhu vůči určitým záznamům

  3. Základní tabulka auditu Oracle Trigger

  4. Porovnání výkonu virtuálních počítačů Windows Azure, část 2