sql >> Databáze >  >> RDS >> Sqlserver

Jaký je význam cizího klíče s vlastním odkazem?

ALTER TABLE [SchemaName].[TableName]  WITH CHECK ADD  
CONSTRAINT [FK_TableName_TableName] FOREIGN KEY([Id])
REFERENCES [SchemaName].[TableName] ([Id])

Tento cizí klíč je zcela nadbytečný a nemá smysl, stačí jej smazat. Nemůže být nikdy porušeno, protože řádek odpovídá samotnému ověření omezení.

V hierarchické tabulce by byl vztah mezi dvěma různými sloupci (např. Id a ParentId )

Pokud jde o důvod, proč mohl být vytvořen docela pravděpodobně pomocí vizuálního návrháře, pokud kliknete pravým tlačítkem na uzel „Klíče“ v průzkumníku objektů a vyberete „Nový cizí klíč“, zavřete dialogové okno, aniž byste vytvořený cizí klíč smazali, a poté vytvořte nějaké další změny v návrháři otevřené tabulky a její uložení vytvoří tento druh redundantního omezení.



  1. Jak spustit uloženou proceduru z Laravelu

  2. mySQL count vrací pouze jeden výsledek, pokud nepoužíváte group by

  3. MySQL Case/If/Then

  4. Návrh databáze pro seskupování