SAP HANA-opetusohjelma: Luo sekvenssi
⚡ Älykäs yhteenveto
Luo sarja kohdassa SAP HANA määrittelee tietokantaobjektin, joka luo automaattisesti kasvatettavan luettelon numeerisista arvoista. Parametrit ohjaavat generaattorin aloitusarvoa, kasvua, rajoja, sykliä ja välimuistitoimintoja.

Mikä on sekvenssi?
Sekvenssi on tietokantaobjekti, joka luo automaattisesti lisätyn luettelon numeroarvoista sekvenssimäärityksessä määritellyn säännön mukaisesti.
Jos esimerkiksi lisätään työntekijän numero automaattisesti taulukon sarakkeeseen (EMPLOYEE_NO), kun taulukkoon lisätään uusi tietue, käytämme järjestystä.
Sekvenssiarvot luodaan nousevassa tai laskevassa järjestyksessä.
Sekvenssejä ei liitetä taulukoihin; sovellus käyttää niitä. On kaksi arvoa peräkkäin -
- CURRVAL – Anna sekvenssin nykyinen arvo.
- NEXTVAL – Anna sekvenssin seuraava arvo.
SYNTAKSI
CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]
SYNTAKSIELEMENTIT
| OSAT | KUVAUS |
|---|---|
| Se on sekvenssin nimi. | |
| [ ] | Se määrittää yhden tai useamman sekvenssiparametrin. |
| ALOITA | Se kuvaa aloitussekvenssin arvon. |
| LISÄYS | Tämä määrittää arvon, jota lisätään viimeisestä arvosta joka kerta, kun uusi sekvenssiarvo luodaan. Oletusarvo on 1. |
| MAXVALUE | Tämä määrittää sekvenssin generoiman maksimiarvon. voi olla välillä -4611686018427387903 ja 4611686018427387902. |
| EI MAKSIMIARVOA | Kun NO MAXVALUE -arvoksi on määritetty nouseva arvo, maksimiarvo on 4611686018427387903 ja laskevan arvo on -1. |
| MINARVO / EI MINARVOA | Se määrittää pienimmän arvon, jonka sekvenssi voi tuottaa. voi olla välillä -4611686018427387904 ja 4611686018427387902. Kun käytetään NO MINVALUE -arvoa, nousevan sekvenssin pienin arvo on 1. |
| SYKLI | CYCLE-direktiivi määrittää, että järjestysnumero aloitetaan alusta sen jälkeen, kun se saavuttaa maksimi- tai minimiarvonsa. |
| EI PYYKLIÄ | Oletusasetus. NO CYCLE -direktiivi määrittää, että järjestysnumeroa ei aloiteta uudelleen sen saavuttamisen jälkeen, kun se on saavuttanut maksimi- tai minimiarvonsa. |
| VÄLIPALA | Välimuistin koko määrittää, mikä sarjanumeroalue tallennetaan solmun välimuistiin. on oltava etumerkitön kokonaisluku. |
| EI VÄLImuistia | Oletusasetus. NO CACHE-direktiivin mukaan järjestysnumeroa ei tallenneta välimuistiin solmussa. |
| NOLLAA | Se määrittää, että tietokannan uudelleenkäynnistyksen aikana tietokanta suorittaa automaattisesti ja sekvenssin arvo aloitetaan uudelleen palautetulla arvolla. |
Esimerkki -
Luomme sekvenssin, jonka nimi on DHK_SCHEMA.EMP_NO, joka lisää sarjan arvoa +1:llä joka kerta, kun sekvenssiä käytetään.
Sekvenssiskripti –
CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1;
Tässä käytämme objektia "sekvenssi" alla olevassa esimerkissä kasvattaaksemme työntekijän no:n arvoa +1:llä joka kerta, kun valintakysely suoritetaan. Kyselyssä "nextval" voidaan käyttää sarjanumeron luomiseen tai samantyyppiseen vaatimukseen.
Sekvenssin käyttö –
SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;
TULOSTA – 100, 101, 102 … ja niin edelleen jokaisella yllä olevan valintakyselyn suorituskerralla.
Sekvenssin käyttäminen taulukossa
Yllä oleva esimerkki palauttaa luvun, mutta ei tallenna sitä mihinkään. Kolme mallia yhdistää sekvenssin reaalidataan, ja oikea valinta riippuu siitä, kuinka paljon ohjausta sovellus tarvitsee.
1) Kutsu NEXTVAL-funktiota suoraan INSERT-funktiossa. Selkein lähestymistapa. Sovellus päättää, milloin numero kulutetaan.
CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE ( EMPLOYEE_NO INTEGER NOT NULL, EMP_NAME NVARCHAR(100), PRIMARY KEY (EMPLOYEE_NO) ); INSERT INTO DHK_SCHEMA.EMPLOYEE VALUES (DHK_SCHEMA.EMP_NO.NEXTVAL, 'Anita Sharma');
2) Käytä sekvenssiä sarakkeen oletusarvona. Numero annetaan, vaikka lisäys ei mainitsisi saraketta, mikä sopii sovelluksille, joita ei koskaan kirjoitettu tietämään sekvenssiä.
CREATE COLUMN TABLE DHK_SCHEMA.EMPLOYEE2 ( EMPLOYEE_NO INTEGER DEFAULT DHK_SCHEMA.EMP_NO.NEXTVAL, EMP_NAME NVARCHAR(100) ); INSERT INTO DHK_SCHEMA.EMPLOYEE2 (EMP_NAME) VALUES ('Ravi Kumar');
3) Lue juuri annettu arvo. CURRVAL palauttaa tässä istunnossa viimeksi otetun luvun, joka osoittaa, miten alikategoria linkitetään juuri lisättyyn pääriviin.
SELECT DHK_SCHEMA.EMP_NO.CURRVAL FROM DUMMY;
⚠️ Varoitus: CURRVAL epäonnistuu virheeseen, kunnes NEXTVAL-funktiota on kutsuttu vähintään kerran nykyisessä istunnossa. Se raportoi tälle istunnolle annetun arvon, ei globaalia maksimiarvoa, joten kahdessa istunnossa voi olla eri nykyiset arvot samaan aikaan.
Sekvenssi vs. identiteetti-sarake
SAP HANA tarjoaa myös identiteettisarakkeen, joka luo numeroita ilman erillistä objektia. Nämä kaksi ratkaisevat saman ongelman eri tavoin.
| Parametri | Järjestys | Identiteettisarake |
|---|---|---|
| Kohteen tyyppi | Itsenäinen tietokantaobjekti | Yhden taulukon sarakeominaisuus |
| Jaettu pöytien kesken | Kyllä, siitä voi piirtää mikä tahansa määrä pöytiä | Ei, se kuuluu yhteen sarakkeeseen |
| Arvo näkyvissä ennen lisäystä | Kyllä, NEXTVALin kautta | Ei, syntyy lisäyksen aikana |
| Määritelmä | LUO SEKVENSSI | LUODETTU OLETUSASETUKSEN MUKAAN IDENTITEETIKSI |
| Parasta | Jaettu numerointi, ylä- ja alaosan lisäykset | Yksinkertainen sijaisavain yhdellä pöydällä |
Valitse sarja, kun numero on tiedettävä ennen rivin luomista tai kun useat taulukot jakavat saman numerosarjan. Valitse identiteettisarake tavalliselle sijaisavaimelle, jolla ei ole laajempaa vaatimusta.
Sekvenssien hallinta: ALTER, DROP ja aukot
Sarja pysyy harvoin alkuperäisessä muodossaan. Kolme ylläpitotehtävää tulee toistuvasti esiin.
Käyttäytymisen muuttaminen. ALTER SEQUENCE säätää olemassa olevan sekvenssin lisäystä, rajoja tai sykliä ilman pudotustaping RESTART WITH nollaa laskurin, mikä on tavanomainen vaihe testidatan uudelleenlatauksen jälkeen.
ALTER SEQUENCE DHK_SCHEMA.EMP_NO RESTART WITH 1000; ALTER SEQUENCE DHK_SCHEMA.EMP_NO INCREMENT BY 10; DROP SEQUENCE DHK_SCHEMA.EMP_NO;
Aukkoaukkojen ymmärtäminen. Järjestysnumeroiden ei taata olevan yhtenäisiä, ja tämä yllättää ihmisiä, jotka odottavat katkeamatonta lokitietoa. Aukkoja esiintyy kolmesta syystä:
- Peruutetut tapahtumat. NEXTVAL ei ole transaktionaalinen. Myöhemmin perutun lisäyksen käyttämää numeroa ei koskaan myönnetä uudelleen.
- Välimuisti. CACHE 100:n avulla solmu varaa sata arvoa kerrallaan. Uudelleenkäynnistys hylkää kaikki käyttämättömät arvot kyseisessä lohkossa.
- Samanaikaiset istunnot. Kaksi samanaikaisesti lisäävää istuntoa lomittavat numeronsa, joten kumpikaan ei näe jatkuvaa suoritusta.
Käytännön sääntö on käsitellä sarjaa yksilöllisten tunnisteiden lähteenä, ei koskaan rivien lukumäärän laskurina. Jos katkeamaton sarja on lakisääteinen vaatimus, kuten laskujen numerointi, se on luotava sovelluslogiikalla omilla ohjaimillaan eikä tietokantasarjan avulla.
Löytää sitä, mikä on olemassa. Järjestelmänäkymä SEQUENCES listaa jokaisen sekvenssin ja sen nykyisen arvon, mikä on nopein tapa tarkastaa skeema. Aiheeseen liittyvää syntaksia käsitellään kohdassa SAP HANA SQL ja sarakemääritelmät SAP HANA-tietotyypit.
