2011-04-12 17 views
8

No he encontrado ninguna respuesta con respecto a mi pregunta, todas las preguntas de restricción exclusivas no incluían MS Access.Restricción única en múltiples campos en Access 2003

La pregunta es cómo hacer una restricción única en los campos de pila múltiple en la base de datos MS Access 2003?

Si mi tabla se compone de columnas id, A, B, C, D, E, F. Tengo un índice en la columna id, pero me gustaría tener un conjunto de restricciones único en las columnas A y B. Por lo tanto, puedo tener un valor duplicado en la columna A, siempre que el valor en la columna B sea diferente.

quiero hacer hincapié en que soy no está interesado en una solución como crear nueva columna con valores concatenados de columnas A y B, y la creación de una restricción en esta columna.

Respuesta

19

Si desea hacerlo a través de la interfaz de usuario, abra la tabla en la vista de diseño. Abra la ventana de índices. Ingrese un nuevo nombre de índice, identifique la columna A, marque el índice como Único. A continuación, agregue una segunda fila debajo de esa, no especifique el nombre del índice en esa fila e identifique la columna B. Cierre la ventana de índices y guarde la tabla.

Ahora tiene un índice único en las columnas A y B. Por ej. mi índice único en un & B se llama Boris aquí:

enter image description here

+2

Gracias, funciona genial. –

+0

Gracias amigo. Gran ayuda. –

6

En ANSI-92 Query Mode, ejecutar este DDL de SQL:

ALTER TABLE MyTable ADD 
    CONSTRAINT MyTable__key 
     UNIQUE (A, B); 

El uso de VBA en Access:

CurrentProject.Connection.Execute _ 
    "ALTER TABLE MyTable ADD CONSTRAINT MyTable__key UNIQUE (A, B);" 
+2

Funciona muy bien, así que he upvoted su respuesta. Pero aceptaré la respuesta de @Damien_The_Unbeliever, que da exactamente el mismo resultado que su solución, ya que le da una solución de acceso explícita. En el futuro, podría ser más útil para otras personas que no conocen SQL y desean usar Access. Una vez más gracias por tu tiempo. –

+1

@ MPękalski: Hmm: el SQL DDL es SQL estándar, por lo que debería funcionar en * cualquier producto * SQL, y el VBA es "una solución de acceso explícita" que no funcionará en ningún producto SQL, excepto en Access. Entonces, ¿no te he dado lo mejor de ambos mundos? ;) – onedaywhen

+2

Sí, sé que funciona. Pero si considera un usuario promedio de Access, entonces diría que no sabe mucho sobre SQL. Al menos en la empresa para la que trabajo. Tal vez debería haber hecho hincapié en que la solución GUI sería la que más se adapte. ;) –

Cuestiones relacionadas