Pregunta

¿Cómo creo una restricción única en una tabla existente en SQL Server 2005?

Estoy buscando tanto el TSQL como cómo hacerlo en el Diagrama de Base de Datos.

¿Fue útil?

Solución

El comando SQL es:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

Ver la sintaxis completa aquí.

Si quieres hacerlo desde un Diagrama de Base de Datos:

  • haga clic derecho en la tabla y seleccione 'Índices/Claves'
  • haga clic en el botón Agregar para agregar un nuevo índice
  • ingrese la información necesaria en las Propiedades en el lado derecho:
    • las columnas que desee (haga clic en el botón de puntos suspensivos para seleccionar)
    • establecer es exclusivo de Sí
    • dale un nombre apropiado

Otros consejos

En SQL Server Management Studio Express:

  • Haga clic derecho en la tabla, elija Modificar o Diseño (para versiones posteriores)
  • Haga clic derecho en el campo, elija Índices/Claves...
  • Hacer clic Agregar
  • Para columnas, Selecciona el nombre del campo quieres ser único.
  • Para Tipo, elegir Llave unica.
  • Hacer clic Cerca, Ahorrar la mesa.
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

Advertencia:Solo puede haber una fila nula en la columna que has configurado como única.

Puedes hacer esto con un índice filtrado en SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Ver El valor del campo debe ser único a menos que sea NULL para una variedad de respuestas.

ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

También descubrí que puedes hacer esto a través de los diagramas de la base de datos.

Al hacer clic derecho en la tabla y seleccionar Índices/Claves...

Haga clic en el botón 'Agregar' y cambie las columnas por las columnas que desee que sean únicas.

El cambio es exclusivo de Sí.

Haga clic en cerrar y guarde el diagrama, y ​​lo agregará a la tabla.

Estás buscando algo como lo siguiente.

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

Documentos de MSDN

Para crear una restricción ÚNICA en una o varias columnas cuando la tabla ya está creada, utilice el siguiente SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Para permitir el nombramiento de una restricción ÚNICA para la consulta anterior

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

La consulta soportada por MySQL/SQL Server/Oracle/MS Access.

En el diagrama del estudio de administración, elija la tabla, haga clic derecho para agregar una nueva columna si lo desea, haga clic derecho en la columna y elija "Verificar restricciones", allí puede agregar una.

En algunas situaciones, podría ser conveniente asegurarse de que la clave única no exista antes de crearla.En tales casos, el siguiente script podría ayudar:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top