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

Nastavení cizího klíče s jiným datovým typem

Ve skutečnosti to dává smysl, proč:

V tabulce můžete ve skutečnosti nastavit jakýkoli sloupec jako jeho primární klíč. Může to být tedy celé číslo, dvojité číslo, řetězec atd. I když v dnešní době většinou používáme jako primární klíč v tabulce buď celá čísla, nebo v poslední době řetězce.

Protože cizí klíč ukazuje na primární klíč jiné tabulky, musíte proto zadat datový typ cizího klíče. A samozřejmě to musí být stejný datový typ.

UPRAVIT:

Jak vidíme, implementace SQL jsou v tomto případě laxní:umožňují kompatibilní typy (INT a BIG INT, Float nebo DECIMAL a DOUBLE) ale na vlastní riziko . Jak můžeme vidět ve vašem příkladu níže.

Normy SQL však určují, že oba datové typy musí být stejné. Pokud je datovým typem znak, musí mít stejnou délku, jinak, pokud je celé číslo, musí mít stejnou velikost a musí obě být podepsaný nebo oba nepodepsané .

Zde můžete sami vidět kapitolu z knihy MySQL vydané v roce 2003.

Doufám, že to odpoví na vaši otázku.



  1. Potřebuji předat názvy sloupců pomocí proměnné v příkazu select v Store Procedure, ale nemohu použít dynamický dotaz

  2. Dotaz na prvek pole ve sloupci JSON

  3. Zjistěte, zda je objekt tabulkovou funkcí na serveru SQL pomocí OBJECTPROPERTY()

  4. Co dělá DELIMITER // ve spouštěči?