sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är meningen med självrefererande främmande nyckel?

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

Denna främmande nyckel är helt överflödig och meningslös, bara ta bort den. Den kan aldrig överträdas eftersom en rad matchar sig själv och validerar begränsningen.

I en hierarkisk tabell skulle förhållandet vara mellan två olika kolumner (t.ex. Id och ParentId )

Angående varför det kan ha skapats ganska troligt med hjälp av den visuella designern om du högerklickar på noden "Keys" i objektutforskaren och väljer "Ny främmande nyckel" och stänger sedan dialogrutan utan att ta bort den skapade främmande nyckeln och gör sedan några andra ändringar i den öppnade tabelldesignern och spara den kommer att skapa denna typ av redundant begränsning.



  1. if elseif villkor i mysql-frågan

  2. $_SESSION-variabler sparas inte när de loggas in automatiskt

  3. Använd MySQL spatial extensions för att välja punkter inuti cirkeln

  4. Varför använder inte MySQL primärnyckeln på JOIN plus ORDER?