{"id":1399,"date":"2013-12-18T16:10:26","date_gmt":"2013-12-18T15:10:26","guid":{"rendered":"http:\/\/www.matjazev.net\/blog\/?p=1399"},"modified":"2014-01-03T08:00:56","modified_gmt":"2014-01-03T07:00:56","slug":"stevilcenje-v-sql-podatkovnih-bazah-iv","status":"publish","type":"post","link":"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-iv\/","title":{"rendered":"\u0160tevil\u010denje v SQL podatkovnih bazah IV"},"content":{"rendered":"<p>Naslednji na\u010din pridobivanja \u0161tevilke (<a href=\"http:\/\/www.matjazev.net\/blog\/2013\/10\/31\/stevilcenje-v-sql-podatkovnih-bazah\/\">prvi del<\/a>, <a href=\"http:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-ii\/\">drugi del<\/a>, <a href=\"http:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-iii\/\">tretji del<\/a>) pa je <strong>poenotena tabela za avtomati\u010dno \u0161tevil\u010denje razli\u010dnih (poljubnih) elementov<\/strong>. Spet velja, da je to <strong>smiselno za MSSql in SQLite podatkovni bazi<\/strong>, saj Oracle pa\u010d uporablja sekvence.<\/p>\n<p><strong>Definirajmo torej enotno tablo za \u0161tevil\u010denje<\/strong>. Tabela bo imela <strong>3 polja<\/strong>. Prvo polje je pa\u010d primarni klju\u010d. Za to re\u0161itev ga ne potrebujemo, vendar pa sem osebno prista\u0161 pravila, da mora imeti vsaka tabela primarni klju\u010d. Drugo polje je nek opis \u0161tevca saj je \u017eelja, da se za vsak <strong>razli\u010den \u0161tevec neodvisno \u0161tevil\u010di<\/strong>. Tretje polje pa je pa\u010d \u0161tevec sam. tabela s podatki bi torej izgledala takole:<br \/>\n<pre lang=&#8221;sql&#8221;>ID&nbsp;&nbsp; OPIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \u0160TEVILO\n1&nbsp;&nbsp;&nbsp;&nbsp;Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1\n2&nbsp;&nbsp;&nbsp;&nbsp;Predra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1\n3&nbsp;&nbsp;&nbsp;&nbsp;Predra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2\n4&nbsp;&nbsp;&nbsp;&nbsp;Ra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1\n5&nbsp;&nbsp;&nbsp;&nbsp;Predra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3\n6&nbsp;&nbsp;&nbsp;&nbsp;Ra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2\n7&nbsp;&nbsp;&nbsp;&nbsp;Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2\n8&nbsp;&nbsp;&nbsp;&nbsp;Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3\n9&nbsp;&nbsp;&nbsp;&nbsp;Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4\n10&nbsp;&nbsp; Predra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4\n11&nbsp;&nbsp; Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5\n12&nbsp;&nbsp; Ra\u010dun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3\n13&nbsp;&nbsp; Dobavnica&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6<\/pre><\/p>\n<h2>Definicija tabele<\/h2>\n<p>MSSql:<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE TABLE SEKVENCA\n( ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INT&nbsp;&nbsp; IDENTITY(1,1)&nbsp;&nbsp;NOT NULL\n, OPIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(15) NOT NULL\n, STEVILO&nbsp;&nbsp; INT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL\n);<\/pre><br \/>\nSQLite:<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE TABLE SEKVENCA\n( ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INTEGER&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL\n, OPIS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VARCHAR(15) NOT NULL\n, STEVILO&nbsp;&nbsp; INTEGER&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL\n\n, PRIMARY KEY(ID)\n);<\/pre><\/p>\n<h2>Pridobivanje nove \u0161tevilke:<\/h2>\n<p>MSSql:<br \/>\n<pre lang=&#8221;sql&#8221;>BEGIN TRANSACTION;\nINSERT INTO SEKVENCA (OPIS, STEVILO) VALUES(&#039;racun&#039;, (SELECT COALESCE(MAX(STEVILO) + 1, 1) FROM SEKVENCA WHERE OPIS = &#039;racun&#039;));\nCOMMIT TRANSACTION;<\/pre><br \/>\nSQLite:<br \/>\n<pre lang=&#8221;sql&#8221;>BEGIN TRANSACTION;\nINSERT INTO SEKVENCA (OPIS, STEVILO) VALUES(&#039;racun&#039;, (SELECT COALESCE(MAX(STEVILO) + 1, 1) FROM SEKVENCA WHERE OPIS = &#039;racun&#039;));\nCOMMIT TRANSACTION;<\/pre><br \/>\n<em><strong>OPOMBA: <span style=\"text-decoration: underline;\">Uporaba transakcije je obvezna! <\/span><\/strong>Na pogled se zdi, da se izvaja INSERT stavek, ki je avtonamna akcija, toda znotraj INSERT stavka se izvaja \u0161e SELECT stavek in vmes se lahko vsebina podatkov spremeni!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Naslednji na\u010din pridobivanja \u0161tevilke (prvi del, drugi del, tretji del) pa je poenotena tabela za avtomati\u010dno \u0161tevil\u010denje razli\u010dnih (poljubnih) elementov. Spet velja, da je to smiselno za MSSql in SQLite podatkovni bazi, saj Oracle pa\u010d uporablja sekvence. Definirajmo torej enotno tablo za \u0161tevil\u010denje. Tabela bo imela 3 polja. Prvo polje je pa\u010d primarni klju\u010d. Za &hellip; <a href=\"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-iv\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u0160tevil\u010denje v SQL podatkovnih bazah IV<\/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\/1399"}],"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=1399"}],"version-history":[{"count":5,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1399\/revisions"}],"predecessor-version":[{"id":1406,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1399\/revisions\/1406"}],"wp:attachment":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/media?parent=1399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/categories?post=1399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/tags?post=1399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}