Wenn Sie eine Fremdschlüsseleinschränkung in einer Tabelle erstellen und das Skript in MS SQL Management Studio erstellen, sieht es folgendermaßen aus.T-SQL-Fremdschlüsselüberprüfung-Einschränkung
ALTER TABLE T1 WITH CHECK ADD CONSTRAINT FK_T1 FOREIGN KEY(project_id)
REFERENCES T2 (project_id)
GO
ALTER TABLE T1 CHECK CONSTRAINT FK_T1
GO
Was ich nicht verstehe, ist, welchen Zweck hat die zweite mit Check-Bedingung ändern. Erstellt die FK-Einschränkung nicht genug? Müssen Sie die Prüfbedingung hinzufügen, um die Referenzintegrität sicherzustellen?
Eine andere Frage: Wie würde es dann aussehen, wenn Sie es direkt in der Spaltendefinition schreiben würden?
CREATE TABLE T1 (
my_column INT NOT NULL CONSTRAINT FK_T1 REFERENCES T2(my_column)
)
Ist das nicht genug?
ok .. und es wird nicht standardmäßig aktiviert? Weil meiner Meinung nach .. wenn ich eine Einschränkung beim Erstellen einer Tabelle schreibe sollte es standardmäßig aktiviert sein. –
Ich möchte eine Antwort für Ihre zweite Frage erhalten, die gesamte Dokumentation, die ich lese, sagt, dass fk constraint die Regel in vorhandenen Spalten standardmäßig erzwingen wird, so würde ich glauben, dass die zweite Aussage unnötig ist. – Ernesto