2 Stimmen

Ist es möglich, ein UNIQUEIDENTIFIER-Feld bei jedem Einfügen automatisch zuzuweisen?

Ich habe eine Tabelle, in der ich ein INT IDENTITY(1,1) PRIMARY KEY-Feld und direkt daneben ein UNIQUEIDENTIFIER-Feld habe, das bei jedem Einfügen in die Tabelle automatisch zugewiesen werden soll. Ich habe versucht, DEFAULT NEWID() zu setzen, aber das funktioniert nur, wenn ich INSERT INTO TableName VALUES (DEFAULT, a, b, c, d, ...). Was ich gerne machen würde, wäre, wenn ich in der Lage wäre NSERT INTO TableName VALUES (a, b, c, d, ...) und das UNIQUEIDENTIFIER-Feld wird automatisch zugewiesen, genau wie das Primärschlüsselfeld. Ist das möglich? Bitte beachten Sie, dass ich dieses Feld nicht als Primärschlüssel (Teil eines Primärschlüssels) für die Tabelle haben möchte, auch wenn es eine gültige Lösung ist.

4voto

gbn Punkte 407102

Verwenden Sie dann die Spaltenliste und lassen Sie die Spalten PK und GUID weg.

INSERT INTO TableName (col3, col4, col5, ...)
VALUES (a, b, c, d, ...) a

Die Verwendung von DEFAULT umgeht das Fehlen einer Spaltenliste, was ohnehin die beste Vorgehensweise ist. Was ist zum Beispiel, wenn Sie Spalten neu anordnen oder hinzufügen? Und die Verwendung eines Triggers ist nicht optimal oder skalierbar

Edit: Die Verwendung eines Triggers ist ein Workaround, um die Best Practice zu umgehen... und lässt sich nicht so gut skalieren

1voto

Dave Markle Punkte 91733

Gbn hat Recht. Ich möchte nur noch ein paar weitere Punkte hinzufügen, die Sie berücksichtigen müssen.

Wenn Sie eine eindeutige ID für Ihre Tabelle haben, warum sollten Sie dann einen UNIQUEIDENTIFIER wollen oder brauchen? Sie sollten wahrscheinlich das eine oder das andere als PK wählen, aber nicht beides. Wenn Sie einen Standard für die Datenbank wählen, wählen Sie außerdem NEWSEQUENTIALID() anstelle von NEWID().

0voto

Pankaj Punkte 9264

Es sollte der Standardwert im Tabellenschema sein. Sie brauchen sich also nicht um diese Spalte zu kümmern, nachdem Sie den Standardwert festgelegt haben.

Öffnen Sie das Tabellenentwurfsfenster und wählen Sie die Spalte, die die GUID-Informationen enthalten soll. Weitere Informationen finden Sie in der folgenden Abbildung.

enter image description here

Wenn Sie also (newID()) als Standardwert festlegen, können Sie den Datensatz einfügen, ohne diesen Spaltennamen in Ihre Einfügeanweisung aufzunehmen.

Bitte lassen Sie mich wissen, falls es Unklarheiten gibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X