Ved hjelp av MySQL Sequences

En sekvens er et sett av heltall 1, 2, 3, ... som er generert for on demand. Sekvenser er ofte brukt i databaser fordi mange programmer krever hver rad i en tabell for å inneholde en unik verdi og sekvenser gir en enkel måte å generere dem. Dette kapittelet beskriver hvordan du bruker sekvenser i MySQL

Bruke AUTO_INCREMENT kolonne.

Den enkleste måten MySQL til å bruke Sekvenser er å definere en kolonne som AUTO_INCREMENT og la resten av tingene til MySQL til ta vare

Eksempel:.

Prøv følgende eksempel. Dette vil opprette tabellen og etter det vil det sette noen rader i denne tabellen, hvor det ikke er nødvendig å gi rekord ID fordi det er auto økes med MySQL
mysql >.; CREATE TABLE insekt - > (- ≫ id INT UNSIGNED NOT NULL AUTO_INCREMENT, - > PRIMARY KEY (id), - > navn VARCHAR (30) NOT NULL, # type insekt - > dato DATE NOT NULL, # dato samlet - > opprinnelse VARCHAR (30) NOT NULL # der samlet); Query OK, 0 rader påvirket (0,02 sek) mysql > INSERT INTO insekt (id, navn, dato, opprinnelse) VERDIER - > (NULL, 'flue', '2001-09-10', 'kjøkken'), - > (NULL, 'tusenbein', '2001-09-10', 'oppkjørselen'), - > (NULL, 'gresshoppe', '2001-09-10', 'front yard'); Query OK, 3 rader påvirket (0,02 sek) Records: 3 Dupliserer: 0 Advarsler: 0mysql > SELECT * FROM insekt ORDER BY id; + ---- + ------------- + ------------ + --------- --- + | id | Navn | dato | opprinnelse | + ---- + ------------- + ------------ + ------------ + | 1 | flue | 2001-09-10 | Kjøkkenet || 2 | tusenbein | 2001-09-10 | oppkjørselen || 3 | gresshoppe | 2001-09-10 | front yard | + ---- + ------------- + ------------ + ------------ + 3 rader i sett (0,00 sek)
Skaff AUTO_INCREMENT Verdier:

LAST_INSERT_ID () er en SQL-funksjon, slik at du kan bruke den fra enhver klient som forstår hvordan man skal kjøre SQL-setninger. Ellers, Perl og PHP-skript gi eksklusive funksjoner for å hente bilen økes verdien av siste post

PERL Eksempel:.

Bruk mysql_insertid attributt for å få AUTO_INCREMENT verdien generert av en spørring. Dette attributtet er tilgjengelig gjennom enten en database håndtak eller en uttalelse håndtak, avhengig av hvordan du sender spørringen. Følgende eksempel refererer den gjennom databasen håndtak:
$ dbh- > do ("INSERT INTO insekt (navn, dato, opprinnelse) VERDIER ('møll', '2001-09-14', 'vinduskarmen')" ), min $ seq = $ dbh- > {mysql_insertid};
PHP Eksempel:

Etter å utstede en spørring som genererer en AUTO_INCREMENT verdi, hente verdien ved å ringe mysql_insert_id ():
mysql_query ("INSERT INTO insekt (navn, dato, opprinnelse) VERDIER ('møll', '2001-09-14', 'vinduskarmen')", $ conn_id); $ seq = mysql_insert_id ($ conn_id);
renumbering en Eksisterende Sequence:

Det kan være et tilfelle når du har slettet mange poster fra en tabell, og du ønsker å endre rekkefølgen på alle postene. Dette kan gjøres ved hjelp av et enkelt triks, men du bør være svært forsiktig med å gjøre det hvis tabellen er å ha sammenføyninger med andre tabellen.

Hvis du finner ut at resequencing en AUTO_INCREMENT kolonnen er uunngåelig, den måten å gjøre det er å slippe kolonnen fra bordet, og deretter legge det igjen. Følgende eksempel viser hvordan å nummerere de id-verdier i insekt tabellen ved hjelp av denne teknikken:
mysql > ALTER TABLE insekt DROP id; mysql > ALTER TABLE insekt - > LEGG id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, - > ADD PRIMARY KEY (id);
Starte en sekvens på en bestemt verdi:

Som standard vil MySQL starte sekvensen fra en, men du kan angi et annet nummer i tillegg ved bordet skapelsen. Følgende er eksempel på at MySQL vil starte sekvensen fra 100.
mysql > CREATE TABLE insekt - > (- ≫ id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100, - > PRIMARY KEY (id), - > navn VARCHAR (30) NOT NULL, # type insekt - > dato DATE NOT NULL, # dato samlet - > opprinnelse VARCHAR (30) NOT NULL # der samlet);

Alternativt kan du opprette bordet og deretter sette den innledende sekvensen verdi med ALTER TABLE
mysql >.; ALTER TABLE t AUTO_INCREMENT = 100;



Previous:
Next Page: