2016-07-07 12 views

Antwort

0

Normalerweise würden Sie dies nie tun, indem Sie eine Spalte hinzufügen. Sie müssen eine Tabelle für die Domänen hinzufügen, die über ein Identitätsfeld namens DomainID verfügen. Dann speichert die Batch-Domain-Tabelle die ID und nicht den Domain-Namen und sie verbindet sich mit der Domain-Tabelle, um die Namen zu erhalten.

+0

Ich verstehe ganz, was Sie meinen, ich würde es normalerweise so machen, aber wegen der aktuellen Datenbankbedingung möchte ich das lösen, indem ich eine Spalte hinzufüge, anstatt eine andere Tabelle zu erstellen. –

+0

Dann ist die einzige Wahl, die Sie haben, es durch einen Abzug zu halten und sicher zu sein, Rassenbedingungen zu behandeln. – HLGEM

0

Um Ihre Frage zu beantworten, können NEWID() und NEWSEQUENTIALID() verwendet werden.

Beachten Sie, dass Newid als Funktion über Trigger/gespeicherte Prozedur/Abfrage aufgerufen werden kann, aber NEWSEQUENTIALID kann nur als DEFAULT Wert für eine Spalte des Typs uniqueidentifier festgelegt werden.

Es gibt Einschränkungen für beide, und SEQUENTIAL ID kann erraten werden oder Cluster verursachen, wenn Stromausfälle auftreten, aber dies kann verwaltet werden, wenn die Sicherheit für den Wert keine Rolle spielt.

ALTER TABLE [Schema_Name].[Table_Name] 
ADD DomainID uniqueidentifier DEFAULT (NEWSEQUENTIALID()) 

Während es datiert ist, hat Dave Pinal eine gute Erklärung zwischen den beiden.

+0

Der Datentyp der Spalte wurde hinzugefügt –