AUTO INCREMENT plusz saját forma
Sziasztok!
Egy látszólag egyszerű kérdésem lenne, de konkrét választ még nem találtam.
A lényege, hogy szeretnék egy felhasználói adatbázist létrehozni, de szükségem lenne egy olyan oszlopra a mysql táblában, ahol én határozom meg a felhasználó azonosítóját, de úgy hogy az auto increment megmarad.
Nézzük a példát:
Felveszek egy új felhasználót -> neki van egy beosztása vagy egy csoport tagja, így a kódja pl: F1002
Felveszek egy másikat -> neki a beosztása miatt pl: G1002
Tehát a betű változhat de a szám is automatikusan nőjön mindig eggyel.
Na most ezt valahol be lehet állítani alapértékként a mysql-ben, vagy maradnom kell az alap megoldásnál, hogy kiolvasom a legutolsó sort ahol az azonosító ezzel a betűvel kezdődik, majd növelem eggyel az értékét és ezt adom meg azonosítóként?
Illetve a másik fele: hogyan tudom megadni, hogy az id 1000-től kezdődjön?
Válaszotokat és segítségeteket előre is köszönöm!
Szobek
■ Egy látszólag egyszerű kérdésem lenne, de konkrét választ még nem találtam.
A lényege, hogy szeretnék egy felhasználói adatbázist létrehozni, de szükségem lenne egy olyan oszlopra a mysql táblában, ahol én határozom meg a felhasználó azonosítóját, de úgy hogy az auto increment megmarad.
Nézzük a példát:
Felveszek egy új felhasználót -> neki van egy beosztása vagy egy csoport tagja, így a kódja pl: F1002
Felveszek egy másikat -> neki a beosztása miatt pl: G1002
Tehát a betű változhat de a szám is automatikusan nőjön mindig eggyel.
Na most ezt valahol be lehet állítani alapértékként a mysql-ben, vagy maradnom kell az alap megoldásnál, hogy kiolvasom a legutolsó sort ahol az azonosító ezzel a betűvel kezdődik, majd növelem eggyel az értékét és ezt adom meg azonosítóként?
Illetve a másik fele: hogyan tudom megadni, hogy az id 1000-től kezdődjön?
Válaszotokat és segítségeteket előre is köszönöm!
Szobek
Kedves Szobek! Az AUTO
Az AUTO INCREMENT a numerikus mezők sajátja, és pont arra való, hogy külső beavatkozás nélkül biztosítsa a rekord egyediségét. Te szöveges kódot szeretnél, ráadásul logikával vezérelten szeretnéd azt kiosztani, úgyhogy erre az a megoldás, amit Te is említesz: lockolod a táblát, lekéred a legnagyobb azonosítót a csoporton belül, eggyel nagyobb értékkel kiosztod az új kódot és elengeded a táblát. Én talán a betű kódot és a számot két külön mezőben tárolnám a könnyebb kezelhetőség miatt, de ez a lényeget nem érinti.
Üdv:
Dávid
Köszönöm a választ, már csak
Mert akkor lehet, hogy külön táblában is kezelem a különböző felhasználókat, úgy is elég sok adat lenne, csak azt nem tudom, hogy hogyan lehet megadni az alap értéket, ahonnan induljon az auto increment.
Köszönöm előre is a választ
AUTO_INCREMENT = 1000
Köszönöm a gyors választ,
Még egyszer köszönöm!
Szobek
Szívesen :) Igen, az
Az UNSIGNED pedig:
Az unsigned tehát csak akkor
Kérdéseidre pontos és gyors
Igen, akkor nem kell vele
Rendben értem, köszönöm
Egyrészt ha nincs valóban
Csoportok?
A users-ben van egy u_id (ez az autoinkrement), a roles-ben egy r_id, persze mindkettőben a többi szükséges mezőkkel.
A usrs_roles pedig csak u_id és r_id oszlopokból áll. (Ez a merge tábla.)
Így meg tudod valósítani (kellő kaszkádolás mellett), hogy egy usernek tetszőleges számú jogosultsága legyen (vagy több csoportba is tartozzon).
A users_roles tábla két oszlopa együttesen kell kulcsot alkosson.
Lekérdezésnél okosan összefűzött JOIN, és akár szövegesen is kiírod a csoportjait (ha van erre oszlopod a roles-ban), valamint viszonylag könnyen tudok őket "tologatni" csoportból ki-be.
Szándékosan nem írtam konkrét kódot hozzá, járj utána, érdemes! MyIsam táblákkal nem fog menni, InnoDB kell.
Kulcsszavak: CONSTRAINT, FOREIGN KEY, REFERENCES, ON DELETE, ON UPDATE.