, tabeller eller resultat er undertiden indeholder to plader.nogle gange er det tilladt, men nogle gange er det, der skal til for at stoppe to plader.nogle gange er det, der er nødvendige for at identificere to registre og fjerne dem fra bordet.dette kapitel beskriver, hvordan undgå at duplikere optegnelser, der forekommer i et skema, og at fjerne eksisterende to plader. forebyggelse af kopier af sted i en tabel, kan du bruge en, primære nøgle eller enestående, indeks på et bord med egnede områder til at stoppe to plader.lad os tage et eksempel: følgende tabel indeholder ikke en sådan indeks eller den primære nøgle, så ville det give to plader for first_name og last_name. skabe tabel person_tbl (first_name char (20), last_name char (20), køn, char (10), for at forhindre, at flere records med samme fornavn og efternavn værdierne skabes i denne tabel, tilføje en primære nøgle til definition af det.når du gør det, er det også nødvendigt at erklære den indekserede kolonner for ikke at være ugyldig, fordi den primære nøgle, ikke gør det muligt for værdier: skabe tabel person_tbl (first_name char (20), der ikke er ugyldig, last_name char (20) ikke er sex char (10), primære nøgle (last_name, first_name)); tilstedeværelsen af en enestående indeks i en tabel, normalt medfører en fejl at forekomme, hvis du sætter rekord i tabellen, at en kopi af en eksisterende rekord i kolonne eller kolonner, der definerer indeks., anvendelse, indsæt ignorere, - - snarere end, indsæt.hvis et arbejde ikke overlapper eksisterende registrering, mysql indføjer det som sædvanlig.hvis det er en kopi, ignorere nøgleord, fortæller mysql til at skille sig af med det i stilhed uden at skabe en fejl, som for eksempel ikke fejl, og samtidig vil ikke indsætte to plader. mysql > indsæt ignorere i person_tbl (last_name, first_name) - > værdier ("jay, thomas') spørgsmål - 1. række berørt (0.00 sek) mysql > indsæt ignorere i person_tbl (last_name, first_name) - > værdier (" jay, thomas'); søgning - 0 rækker berørt (0.00 sek), anvendelse, erstatte, i stedet for at indsætte.hvis det er nyt, det er indsat som med stik.hvis det er en kopi, den nye plade erstatter den gamle:, mysql > i stedet for i person_tbl (last_name, first_name) - > værdier ("ajay, kumar '); søgning - 1. række berørt (0.00 sek) mysql > i stedet for i person_tbl (last_name, first_name) - > værdier (" ajay, kumar'); spørgsmål, okay, to rækker berørt (0.00 sek), indsætte ignorere og erstatte bør vælges i henhold til den dobbelte behandling opførsel vil du virkning.indsæt ignorere holder den første af en række overlappende optegnelser og udsmid resten.erstatte holder den sidste af en række kopier og slette alle de ældre. en anden måde at håndhæve særegenhed, er at tilføje en enestående indeks snarere end en primære nøgle til et bord, skabe tabel person_tbl (first_name char (20), der ikke er ugyldig, last_name char (20) ikke er sex char (10) enestående (last_name, first_name), at tælle og identificere kopier: efter er den forespørgsel tæller to plader med first_name og last_name i en tabel, mysql > udvælge tæller (* * *) som gentagelser, last_name, first_name - > fra person_tbl - > gruppen af last_name, first_name - > under gentagelser > 1, dette spørgsmål vil vende tilbage med en liste over alle de to plader i person_tbl tabel.i almindelighed, at identificere sæt af værdier, som er kopieret, gøre følgende:,,, fastlægge, hvilke kolonne indeholder de værdier, som kan kopieres.,,, en liste over disse kolonner i kolonnen udvælgelse liste sammen med grev (*).,,, en liste over de kolonner i gruppen af en klausul, som godt.,, tilføje en under afsnit, som fjerner enestående værdier som gruppe, der tæller, er større end en.,,, fjernelse af kopier af en forespørgsel resultat:, du kan bruge, særskilt, samtidig med at udvælge erklæring for at finde ud af, entydige fortegnelser til rådighed i en tabel, mysql > udvælge forskellige last_name, first_name - > og fra person_tbl - > for last_name;, et alternativ til forskel er at tilføje en gruppe af klausulen om, at navne kolonnerne du vælger.dette har den virkning, at fjerne kopier og kun at udvælge den enestående kombination af værdier i den angivne kolonner:, mysql > udvælge last_name, first_name - > fra person_tbl - > gruppen af (last_name, first_name), fjernelse af kopier af tabel udskiftning:,, hvis du har to plader i et skema, og vil du fjerne alle de to plader fra bordet, så her er den procedure, mysql > skabe tabel tmp udvælge last_name, first_name, sex - > fra person_tbl; - > gruppen af (last_name, first_name); mysql > fald i tabel person_tbl; mysql > ændre tabel tmp omdøbe til person_tbl; en let måde at fjerne to plader i en tabel, er at tilføje et indeks eller en hovedperson key til bordet.selv om denne tabel allerede er til rådighed, kan du bruge denne teknik til at fjerne to registre, og du vil være i sikkerhed i fremtiden., mysql > ændre ignorere tabel person_tbl - > der tilsættes primære nøgle (last_name, first_name),
mysql håndtering af kopier
Previous:ved hjælp af mysql sekvenser
Next Page:mysql og sql injektion