{"id":1375,"date":"2013-12-18T13:55:27","date_gmt":"2013-12-18T12:55:27","guid":{"rendered":"http:\/\/www.matjazev.net\/blog\/?p=1375"},"modified":"2013-12-18T14:14:11","modified_gmt":"2013-12-18T13:14:11","slug":"stevilcenje-v-sql-podatkovnih-bazah-ii","status":"publish","type":"post","link":"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-ii\/","title":{"rendered":"\u0160tevil\u010denje v SQL podatkovnih bazah II"},"content":{"rendered":"<p><a href=\"http:\/\/www.matjazev.net\/blog\/2013\/10\/31\/stevilcenje-v-sql-podatkovnih-bazah\/\">Zadnji\u010d sem vam omenil tri na\u010dine avtomati\u010dnega \u0161tevil\u010denja<\/a> v SQL podatkovnih bazah, danes pa vam bom <strong>prikazal prvega<\/strong>. Posamezne na\u010dine vam bom prikazal na primeru <strong>treh popularnih SQL baz: Oracle, MSSQL in Sqlite.<\/strong><\/p>\n<h2>Sekvence (SEQUENCE)<\/h2>\n<p>Izmed omenjenih treh podatkovnih baz <strong>poznata sekvence Oracle in MSSQL (vendar MS samo od letnika 2012 dalje!)<\/strong>. Postopek dela s sekvencami je <strong>skrajno preprost. <\/strong><\/p>\n<ol>\n<li>Najprej definiramo novo sekvenco<\/li>\n<li>Ko potrebujemo naslednjo \u0161tevilko jo iz sekvence zahtevamo<\/li>\n<\/ol>\n<p>To je o\u010ditno zelo dober na\u010din za pridobivanje avtomati\u010dnih \u0161tevilk. Sekvenco <strong>dolo\u010dimo z najmanj petimi parametri<\/strong> (<strong>ime sekvence, minimalna vrednost, maksimalna vrednost, preskok in za\u010detna vrednost<\/strong>):<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE SEQUENCE sequence_name\n&nbsp;&nbsp;MINVALUE value\n&nbsp;&nbsp;MAXVALUE value\n&nbsp;&nbsp;START WITH value\n&nbsp;&nbsp;INCREMENT BY value;<\/pre><br \/>\nPrimer:<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE SEQUENCE seq_racuni\n&nbsp;&nbsp;MINVALUE 1\n&nbsp;&nbsp;MAXVALUE 99999999\n&nbsp;&nbsp;START WITH 1\n&nbsp;&nbsp;INCREMENT BY 1;<\/pre><br \/>\nKot je vidno sekvenca ni omejena na zaporedno \u0161tevil\u010denje, temve\u010d lahko \u0161tevil\u010dimo tudi s <strong>korakom ve\u010djim od 1 (INCREMENT BY)<\/strong>. Ravnotako<strong> ni nujno<\/strong>, da se sekvenca <strong>za\u010dne z 1 (START WITH).<\/strong><\/p>\n<p><em>OPOMBA: Seveda je z uporabo najpreprostej\u0161e srednje\u0161olske matematike tako ali tako preprosto napisati poljubno funkcijo \u0161tevil\u010denja tako da pa\u010d napi\u0161emo neko funkcijo y = F(x), kjer X pa\u010d raste od 1 do N, y pa je \u0161tevilka, ki nas zanima. Recimo, \u010de \u017eelimo za\u010deti \u0161tevil\u010diti z 8 in potem nadaljevati s korakom 15: y = 8 + 15 * (x \u2013 1)!<\/em><\/p>\n<p>Uporabiti tak\u0161no sekvenco pa je \u0161e bolj preprosto.<\/p>\n<p>V <strong>Oracle<\/strong> jo preprosto zahtevamo s funkcijo <strong>.nextval:<\/strong><br \/>\n<pre lang=&#8221;sql&#8221;>SELECT seq_racuni.nextval FROM dual;<\/pre><br \/>\noziroma<br \/>\n<pre lang=&#8221;sql&#8221;>INSERT INTO racuni\n&nbsp;&nbsp;(stevilka_racuna, znesek, datum...)\nVALUES\n&nbsp;&nbsp;(seq_racuni.nextval, 1123.4, SYSDATE...);<\/pre><br \/>\nV <strong>MSSQL<\/strong> pa s konstruktom <strong>NEXT VALUE FOR<\/strong>:<br \/>\n<pre lang=&#8221;sql&#8221;>SELECT NEXT VALUE FOR seq_racuni;<\/pre><br \/>\noziroma<br \/>\n<pre lang=&#8221;sql&#8221;>INSERT INTO racuni\n&nbsp;&nbsp;(stevilka_racuna, znesek, datum...)\nVALUES\n&nbsp;&nbsp;(SELECT NEXT VALUE FOR seq_racuni, 1123.4, SYSDATE...);<\/pre><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zadnji\u010d sem vam omenil tri na\u010dine avtomati\u010dnega \u0161tevil\u010denja v SQL podatkovnih bazah, danes pa vam bom prikazal prvega. Posamezne na\u010dine vam bom prikazal na primeru treh popularnih SQL baz: Oracle, MSSQL in Sqlite. Sekvence (SEQUENCE) Izmed omenjenih treh podatkovnih baz poznata sekvence Oracle in MSSQL (vendar MS samo od letnika 2012 dalje!). Postopek dela s &hellip; <a href=\"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-ii\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u0160tevil\u010denje v SQL podatkovnih bazah II<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35,53,19],"tags":[66,65,67,30],"_links":{"self":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1375"}],"collection":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/comments?post=1375"}],"version-history":[{"count":10,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1375\/revisions"}],"predecessor-version":[{"id":1384,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1375\/revisions\/1384"}],"wp:attachment":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/media?parent=1375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/categories?post=1375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/tags?post=1375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}