Ich würde besser gefällt, um die Unterschiede zu verstehen für zwischen der Verwendung von CHECKSUM vor einem INSERT Einzigartigkeit in einem Datensatz Überprüfung (mit eindeutigen) gegen selbst verweisende Tabelle Aussage wie der eine unten. Welche Szenarien würden eine Option darstellen, um die beste Wahl gegenüber der anderen zu sein, und aus welchen Gründen?SQL-Tabelle Selbstreferenz Abfrage vs. eindeutige Einschränkungen Prüfsumme
Anforderung: Jeder Satz von Spalten muss aus jedem Datensatz in der Tabelle eindeutig sein, weshalb ich diese Aussage zusammenstelle; um nach allen Spalten in einem Aufruf der Datenbank zu suchen.
INSERT INTO tblTable
(Column1, Column2, Column3, Column4, Column5, Column6)
SELECT
@Column1, @Column2, @Column3, @Column4, @Column5, @Column6
WHERE NOT EXISTS
(SELECT DISTINCT
t1.Column1,
t1.Column2,
t2.Column3,
t2.Column4,
t3.Column5,
t3.Column6
FROM tblTable t1
JOIN tblTable t2 ON (t1.UID = t2.UID)
JOIN tblTable t3 ON (t1.UID = t3.UID)
WHERE
t1.Column1 = @Column1 and
t1.Column2 = @Column2 and
t2.Column3 = @Column3 and
t2.Column4 = @Column4 and
t3.Column5 = @Column5 and
t3.Column6 = @Column6)
Wenn in einer Tabelle unter Verwendung der einzigartigen Einschränkungen, wie und wo ich anmelde behandeln der Benutzer, dass diese Werte für ihre Verwendung nicht verfügbar sind, da sie bereits verwendet werden? – Cameron
Es hängt sowohl von der SQL-Variante, die Sie verwenden, als auch von der Programmiersprache ab, die Sie verwenden. Wenn es sich um SQL Server/.NET handelte, konnten Sie eine SqLException abfangen und diese verwenden, um Ihre Fehlermeldung zu generieren. Siehe http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlexception.aspx –