Wie erstelle ich in SQL Server 2005 eine eindeutige Einschränkung für eine vorhandene Tabelle?
Ich suche sowohl nach dem TSQL als auch nach dem Datenbankdiagramm.
Der SQL-Befehl lautet:
ALTER TABLE <tablename> ADD CONSTRAINT
<constraintname> UNIQUE NONCLUSTERED
(
<columnname>
)
Siehe die vollständige Syntax hier .
Wenn Sie es von einem Datenbankdiagramm aus machen wollen:
In SQL Server Management Studio Express:
ALTER TABLE [TableName] ADD CONSTRAINT [constraintName] UNIQUE ([columns])
Warnung: In der Spalte, die Sie als eindeutig definiert haben, darf sich nur eine Nullzeile befinden.
Sie können dies mit einem gefilterten Index in SQL 2008 tun:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;
Siehe Der Feldwert muss eindeutig sein, es sei denn, er ist NULL für einen Antwortbereich.
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
) ON [PRIMARY]
Ich fand auch, dass Sie dies über die Datenbankdiagramme tun können.
Klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie Indizes/Schlüssel ...
Klicken Sie auf die Schaltfläche "Hinzufügen" und ändern Sie die Spalten in die Spalten, die Sie einzigartig machen möchten.
Änderung ist eindeutig zu Ja.
Klicken Sie auf Schließen und speichern Sie das Diagramm. Das Diagramm wird der Tabelle hinzugefügt.
Sie suchen nach etwas wie dem Folgenden
ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b
Verwenden Sie die folgende SQL-Anweisung, um eine UNIQUE-Einschränkung für eine oder mehrere Spalten zu erstellen, wenn die Tabelle bereits erstellt ist:
ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
Um die Benennung einer UNIQUE-Einschränkung für die obige Abfrage zuzulassen
ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)
Die von MySQL/SQL Server/Oracle/MS Access unterstützte Abfrage.
Wählen Sie im Management Studio-Diagramm die Tabelle aus, klicken Sie mit der rechten Maustaste, um eine neue Spalte hinzuzufügen, klicken Sie mit der rechten Maustaste auf die Spalte, und wählen Sie "Einschränkungen prüfen" aus.
In einigen Situationen kann es wünschenswert sein, sicherzustellen, dass der eindeutige Schlüssel nicht vorhanden ist, bevor Sie ihn erstellen. In solchen Fällen kann das folgende Skript hilfreich sein:
IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name>
GO
ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>)
GO