2010-01-24 9 views
22

Vorremmo evitare la duplicazione dei record nel nostro database di accesso MS utilizzando un indice univoco a più colonne. A causa del modo in cui i dati vengono inviati (tramite rete), talvolta vengono ricevuti dati duplicati. L'origine dati non invia un ID univoco, quindi l'opzione più semplice è impedire l'inserimento di record duplicati.Possiamo creare indici multicolor unici sui database di accesso MS?

Secondo Unique Index Design Guidelines:

Con indici univoci più colonne, l'indice garantisce che ogni combinazione di valori nella chiave dell'indice è unico. Ad esempio, se un indice univoco è creato su una combinazione del cognome, FirstName e colonne MiddleName, non due righe della tabella potrebbe avere lo stessa combinazione di valori per questi colonne.

Questo è tuttavia per SQL 2005, quindi non sono sicuro che sia possibile utilizzare l'accesso MS.

Credo che un'alternativa è quella di utilizzare forse la query (pseudo codice):

insert into foobar (a, b, c) values ('x', 'y', 'z') 
where (a <> 'x') and (b <> 'y') and (c <> 'z') 

... ma mi sento come un indice sarebbe meglio.

+0

perché non dare le tabelle in questione un indice univoco? Non vedo cosa questo debba fare specificamente con C++, BTW. –

+0

Sì, non ero sicuro se fosse rilevante. Abbiamo già un indice univoco; ma la fonte dei dati non fornisce questo. Aggiornerò la mia domanda –

+0

L'indice univoco deve essere sui dati effettivi. –

risposta

7

Aprire la tabella in visualizzazione struttura in MS Access, selezionare le tre colonne che si desidera creare nell'indice univoco, quindi fare clic sul piccolo tasto sulla barra degli strumenti. Non puoi avere valori nulli in una chiave primaria (set).

+0

Il problema Null è cruciale: se uno qualsiasi dei campi può essere Nullo, non è possibile imporre l'unicità sull'indice (poiché non sono mai uguali due Null, due record con 5 campi identici e un sesto campo Null in entrambi sarebbero non essere considerati duplicati). –

+3

Questa risposta è giusta. Ma qualcuno dovrebbe dire a Nick che quello che sta veramente cercando è un CONSTRAINT univoco, non un indice univoco. Se crea un vincolo PK a più colonne, otterrà un indice univoco a più colonne. Ma l'indice è solo uno strumento. La caratteristica logica che sta cercando è il vincolo. –

+0

@Walter Mitty Penso che tu abbia ragione - guarda il commento sulla mia risposta. –

39

Risulta possibile creare un indice univoco a più colonne su un database di accesso MS, ma è un po 'folle se si desidera eseguire ciò tramite la GUI. C'è anche una limitazione; puoi utilizzare solo 10 colonne per indice.

In ogni caso, ecco come si crea un indice univoco a più colonne su un database di accesso MS.

  1. Aprire la tabella in modalità di progettazione e design , selezionare indici.
  2. creare una nuova riga e immettere un valore nel Nome indice cellulare,
  3. scegliere la prima colonna dal menu a discesa.
  4. Aggiungere una nuova riga e lasciare vuota la cella Nome indice.
  5. Scegliere la seconda colonna e così via.

Qui è quello che dovrebbe essere simile:

multicolumn index in MS access

+0

Hmm, per qualche motivo questo rende 'Foo' univoco a sé stante, al contrario di combinato con' Foo', 'Bar', ecc. Devo consentire' ("a", "b", "c", "d") 'solo una volta, ma consenti anche' ("x", "b", "c", "d") '- e questa disposizione degli indici non sembra consentirlo perché gli ultimi 3 valori già esistere. –

+0

@Remou ti ha dato un modo più semplice per farlo, cioè seleziona più righe e premi il pulsante PK sulla barra degli strumenti. Questo mi sembra abbastanza intuitivo, dato che è il modo GUI di impostare qualsiasi chiave primaria. –

+0

@ David-W-Fenton Sì, come Remou ha detto. –

1

Siamo in grado di rendere i dati a più di essere dati univoci senza impostarle come chiave primaria.

(Nota: solo 1 dati nella tabella può essere la chiave primaria)

passo per impostare il valore dei dati dati unici (per MS Access 2007 - 2010)

  1. Aperto tabella selezionata in Design View
  2. Fare clic su (evidenziare) la colonna/attributo specifico che si desidera impostare come unico
  3. Nella parte inferiore della tabella si vedrà "Proprietà indice" per quella colonna specifica
  4. Find "Indicizzato" colonna, attualmente i dati nella casella di testo indicizzato è "No", modificare i dati facendo clic sul fine della casella di testo, scegliere "Sì (duplicati)"

spera molto questo metodo può aiuta tutti voi! :)

+1

Funziona solo per colonne singole. La domanda riguarda più colonne. – Andre

+0

@ Andre451 è possibile utilizzare questo metodo per più colonne Andre. Basta impostare questo metodo per ogni colonna che desideri impostare come unica. Hai provato a impostare in più di una colonna? Perché è un lavoro sul mio. – finazrosli

+1

Sì, ovviamente è possibile impostare un indice univoco per più colonne separatamente. Ma la domanda riguarda l'impostazione di un singolo indice univoco che copre più colonne. – Andre

-1

Unique key

Servirà come Chiave univoca in Access Ms 2007/2010

Problemi correlati