Lev-IT-áció

Ez a kis Blog IT fejlesztéshez kapcsolódó témaköröket fog boncolgatni, amelyeket igyekezni fogok gyakorlatiasan megfogalmazni, elemelkedve az elméleti síkról.

Rólam azt kell tudni, hogy már évek óta fejlesztek nagyvállalati, banki egyedi szoftvereket és hát mit mondjak szeretem ezt a szakmát.

A blog témájába beleesik a szembejövő kisebb-nagyobb probléma körök tárgyalása ugyanúgy mint a különböző példakód jellegű „móriczka” kódolás, egyes technológiák bemutatásáról. Így bizony felfog tűnni a blogban az érdeklődési körömbe eső összes technológia – előbb utóbb ;). Ezek a teljesség igénye nélkül (mire is lehet itt számítani):
- .Net programozás. (VB.Net, C#.Net, ASP.NET)
- SQL programozás
- Ismertebb adatbázis kezelők (MS SQL Server, Oracle)
- Kissé egzotikusabb (kevésbé elterjedt) adatbázis kezelők (PostgreSQL, FireBird)
- Java
- Fejlesztési módszertanok


Fogjátok azt is látni, hogy a fenti témákban vannak nálam jártasabb emberek is, de a magyar nyelvű blog szféra szerintem annyira szegényes ezekben a témakörökben, hogy én még simán beférek ide ;D

Remélem mindenkinek tetszeni fog! :)

Címkék

.net (8) adatbázis (3) ajax (1) asp.net (4) c# (6) debian (1) firebird (1) hash (1) java (1) linux (2) masterpage (1) mono (1) monodevelop (1) ms sql (1) mysql (1) oracle (1) postgresql (4) SHA256 (1) sql (5) szekvencia (1) tomcat (1) tools (1) üzemeltetés (1) visual basic (5) Címkefelhő

Szekvenciák a nagyvilágban - ORACLE

2011.04.04. 17:15 :: apriliars

Ha primary key mezőinkben egyedi számozást szeretnénk használni gyorsan rájöhetünk, hogy ahány RDBMS annyi megoldást nyújt erre a kérdésre. Egy rövid sorozattal szeretném az áttekintést segíteni, hogy ez mely adatbázis kezelőnél, hogyan is megy.

Ezúttal az Oracle által kínált megoldásokat mutatom be röviden.

Az ORACLE is azok közé tartozik akik nem támogatják az identity kiterjesztés a mezőikhez, így nem lehet auto increment mezőt definiálni. Auto increment helyett van szekvencia!

A szekvencia egy olyan objektum amely fejben tart egy értéket nekünk és azt ha kell megfelelő értékkel növeli. Csináljunk is gyorsan egy szekvenciát!

CREATE SEQUENCE S1
MINVALUE 50
MAXVALUE 999999999999999999999999999
START WITH 100
INCREMENT BY 1;

Így ni. Most létrehoztunk egy szekvenciát, amely 100-ról indul és egyesével növeli az értékét addig a sok 9-e számig. Megjegyzem, csak a leggyakrabban használt kapcsolókat muttattam meg, még egy csomó dolgot lehet állítani. De van másik véglet is: amikor csak Create Sequence min_seq-et adunk. Ez is létrehoz egy szekvenciát.

Kérjük el a következő értéket a szekvenciából: SELECT s1.NEXTVAL FROM Dual
Kérjük el az aktuális értéket a szekvenciából: SELECT s1.CURRVAL FROM Dual

Nagyon ott van! De hogy lesz ebből id mező-érték? Hát így pl.:

CREATE TABLE T1 (
 id NUMBER(10)
,adat VARCHAR2(50)
,CONSTRAINT t1_pk PRIMARY KEY (id)
);
CREATE SEQUENCE T1_seq;
INSERT INTO T1 VALUES (T1_seq .NEXTVAL, 'Első');

Probáltam Default-ba tenni, de nem hagyta, triggert meg ezért csak nem írok! :(

Van még egy érdekesség ezzel a témával kapcsolatban! Ha módosítani szeretnénk a jelenlegi értéket ahhoz egy (szerintem) elég primitív megoldáshoz kell nyúlni. Mondjunk áll a számláló 100-on és 1000-re akarom módosítani. Akkor a következőt csinálom

ALTER SEQUENCE S1 INCREMENT BY 900 --1000-100 !!!

SELECT S1 .NEXTVAL FROM Dual

ALTER SEQUENCE S1 INCREMENT BY 1

Hogy, erre miért nincs egy setvalue függvény azt csak Kaliforniában tudják. :)

Szólj hozzá!

Címkék: sql oracle szekvencia

A bejegyzés trackback címe:

https://lev-it-acio.blog.hu/api/trackback/id/tr22799293

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása