Wenn eine gespeicherte Prozedur erstellt wird, die in eine einfache Verknüpfungstabelle eingefügt wird, sollte sie prüfen, ob die FK vorhanden sind und einen Fehler fehlerfrei zurückgeben oder SQL einfach eine Ausnahme auslösen lassen?Empfohlene Vorgehensweise für gespeicherte Prozeduren? Sollten sie vor dem Einfügen prüfen, ob Fremdschlüssel vorhanden sind?
- Was ist die beste Vorgehensweise?
- Was ist am effizientesten?
Nur falls jemand meine Frage nicht versteht:
Table A
Table B
Table AB
Sollte ich:
IF EXISTS(SELECT 1 FROM A WHERE Id = @A) AND EXISTS(SELECT 1 FROM B WHERE Id = @B)
BEGIN
INSERT AB (AId,BId) VALUES (@A, @B)
END
ELSE
--handle gracefully, return error code or something
oder
INSERT AB (AId,BId) VALUES (@A, @B)
und lassen Sie SQL
eine Ausnahme werfenDank
Wenn Sie sich Sorgen um die Leistung machen und eine Vielzahl von Fremdschlüsselverletzungen erwarten, sehen Sie sich die [Auswirkung der verschiedenen Fehlerbehandlungstechniken] an (http://sqlperformance.com/2012/08/t-sql-abfragen)/Fehlerbehandlung) und messen Sie die Auswirkungen auf Ihre Datenbank und Hardware. –