sql >> Database >  >> RDS >> Sqlserver

Wat is de betekenis van zelfverwijzende externe sleutel?

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

Deze externe sleutel is volledig overbodig en zinloos, verwijder hem gewoon. Het kan nooit worden geschonden omdat een rij met zichzelf overeenkomt en de beperking valideert.

In een hiërarchische tabel zou de relatie tussen twee verschillende kolommen zijn (bijv. Id en ParentId )

Wat betreft de reden waarom het waarschijnlijk is gemaakt door het gebruik van de visuele ontwerper, als u met de rechtermuisknop op het knooppunt "Sleutels" in de objectverkenner klikt en "Nieuwe externe sleutel" kiest, sluit dan het dialoogvenster zonder de gemaakte externe sleutel te verwijderen en maak vervolgens een aantal andere wijzigingen in de geopende tabelontwerper en opslaan zullen dit soort overbodige beperkingen creëren.



  1. Illegale mix van sorteringen (utf8_general_ci,IMPLICIT) en (utf8_unicode_ci,IMPLICIT) voor bewerking '=' in MySQL Stored Procedure

  2. ORA-01855:AM/AM of PM/PM verplicht

  3. SQLalchemy:wijzigingen die niet worden vastgelegd in db

  4. Mogelijke uitleg over WITH RECURSIEVE Query Postgres