Ha az ember egy létrehozott szekvenciát egy konkrét táblával össze akar kapcsolni, ezt jelenleg csak manuálisan tudja megcsinálni vmi sql client/manager programmal.
Nem lehetne ezt leegyszerűsíteni úgy, hogy a szekvenciát a tds-ben definiálnánk, a
column-hoz default-ként hozzárndelnénk?
Ezután a tableentity:create metodus a táblával egyidőben létrehozhatná a szekvenciát is és mindjárt hozzá is rendelhetné a megfelelő oszlophoz.
Valami ilyesmire gondoltam:
name: testdata.a
version: "bt2tds 1.0.01"
table: konto.a
column: ID N4 d=seq_a
column: NAME C10 nn
column: VALUE N19.2
column: DATUM D
column: FLAG L
primkey: ID
index: name(NAME)
sequence: name=seq_a min=1 max=9999999 inc=2
Nagyon elvetemült gondolat?
- 4452 megtekintés
Hozzászólások
Elvileg két lehetőség volna:
1) Lehet definiálni olyan oszlopokat, amik insertnél maguktól megkapják egy szekvencia értékét. Elsőre ez kényelmesnek tűnik, viszont az insert után nem tudod, mi lett az automatikusan kapott érték. Persze le lehet kérdezni valahogy. Ezt szeretnéd te.
2) A másik, hogy a szekvenciát az alkalmazási program kezeli, és az előre ismert értéket a program írja be a kulcsmezőbe.
Azért választottam a 2-es változatot, mert egyszerűbbnek látom, és szeretném szem előtt tartani a kulcsokat. És persze lehet olyan objektumokat írni, amik ezt belül elintézik. Végülis mindegy, valahogy dönteni kellett, ez lett.
--
CCC3
- A hozzászóláshoz be kell jelentkezni
Hogyan lehet lekérdezni?
Irjak egy tárolt eljárást az adott insert-re, ami az automatikusan generált értékkel térnek vissza, vagy van elegánsabb módja is?
- A hozzászóláshoz be kell jelentkezni
Tárolt vagy nem tárolt most mindegy. Nem emlékszem rá fejből, de Oraclenél és Postgresnél is láttam a hozzá való SQL parancsot (vagy függvényt?) és természetesen nem is hasonlítanak egymásra. Az SQL2-ben egyelőre csak ezzel a 2-vel foglalkozunk. További adatbáziskezelőknél nyilván további variációk vannak.
Szerk: nextval és currval. Csak Postgresben ezek függvények, Oracleben meg pszeudo-oszlopok, ha jól értem. Úgyhogy valamennyire mégis csak hasonlítanak.
--
CCC3
- A hozzászóláshoz be kell jelentkezni
Postgres-ben a serial típus ilyen - létrehoz egy szekvenciát és hozzárendeli a nextvalue értékét default-ként a not null mezőhöz. Oracle-ben szekvencia és trigger alkalmazásával lehet megoldani.
- A hozzászóláshoz be kell jelentkezni
Mostmár értem hogy miért ezt a megoldást választottad, viszont előfordul hogy az ember nem is kíváncsi a kapott értékre, egyszerűen csak egy egyedi azonosítóra van szüksége és ilyen esetben lenne kényelmesebb ez a fajta definíció
- A hozzászóláshoz be kell jelentkezni