2010-02-01 15 views
31

¿Cómo se agrega una restricción única en SQL Server 2005 a dos columnas? Por lo que permite decir que tengo:SQL Server 2005 Restricción única en dos columnas

PK, A, B ... 
x1 1 1 
x2 1 2 
x3 2 1 
x4 2 2 

que no debería ser capaz de añadir otra fila 'x5' y tienen los valores de A y B sea 1,1, ya que ya están en la base de datos de x1?

Ok logramos que funcione y gracias a OMG. Vaya a la vista de tabla, seleccione las dos columnas, haga clic con el botón derecho y seleccione 'índices/claves' - pestaña general, seleccione las columnas que desea que sean únicas y luego configure 'es único' en verdadero. Esto está usando el diseñador de mesa.

Gracias.

+0

Duplicado: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-table -table –

+0

¿Has visto ? – Rafael

Respuesta

35

En SQL Server, una restricción única realmente se implementa como un índice único. Uso:

CREATE UNIQUE INDEX <uix_name> ON <table_name>(<col_A>, <col_B>) 

Para más información, vea this MSDN page.

+0

Sí, logramos esto a través del diseñador de mesas y funcionó, genial. – flavour404

+0

Estoy de acuerdo con @adaTheDev y agrego restricción de tabla en lugar de agregar un índice único "en bruto". La creación de índices implica una posible mejora del rendimiento. Pero luego uno podría soltar este índice antes de darse cuenta de que está allí no para el rendimiento sino para la funcionalidad. Nunca dejarías caer una restricción sin darte cuenta de que la mayoría cumple algún propósito funcional. (es cierto que una restricción única crea un único final de índice, pero no se puede eliminar directamente, solo mediante la eliminación de la restricción) –

+0

@Ralph Shillington: Un índice único también puede tener columnas INCLUDE. Una restricción no puede. Para obtener más información: http://stackoverflow.com/questions/2152176/unique-way-to-have-unique-rows-intabletable –

37
ALTER TABLE YourTable 
ADD CONSTRAINT UQ_YourTable_ConstraintName UNIQUE(A, B) 
+0

¿Cuál es la sintaxis que va en el cuadro de restricción? Destacamos las dos columnas, haga clic con el botón derecho en 'constraints' y coloque 'UNIQUE (DocType, PubID)' y se indica que hay un error: 'restricción de validación de errores' – flavour404

+1

Más fácil/más rápido que incluso entrar al diseñador de tablas. abrir una nueva pestaña de consulta en SSMS y ejecutar el SQL. – AdaTheDev

+0

+1: restricción única para la victoria, le dice a alguien que llega al sistema en el futuro más de lo que lo hace un índice único. –

Cuestiones relacionadas