{"id":1386,"date":"2013-12-18T14:41:09","date_gmt":"2013-12-18T13:41:09","guid":{"rendered":"http:\/\/www.matjazev.net\/blog\/?p=1386"},"modified":"2013-12-26T18:34:17","modified_gmt":"2013-12-26T17:34:17","slug":"stevilcenje-v-sql-podatkovnih-bazah-iii","status":"publish","type":"post","link":"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-iii\/","title":{"rendered":"\u0160tevil\u010denje v SQL podatkovnih bazah III"},"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>) je <strong>lastna tabela za vsako \u0161tevil\u010denje<\/strong>. Izmed omenjenih SQL podatkovnih baz (<em>Oracle, MSSql in Sqlite<\/em>) je Oracle \u017ee od nekdaj uporabljal sekvence in avtomati\u010dnega \u0161tevil\u010denja primarnih klju\u010dev ne pozna. <strong>Za MSSql in SQLite pa je to osnovni na\u010din avtomati\u010dnega \u0161tevil\u010denja. <\/strong><em>Kot omenjeno \u017ee zadnji\u010d je MSSql sekvence dobil \u0161ele v reinkernaciji iz leta 2012, SQLite pa jih \u0161e vedno ne pozna.<\/em><\/p>\n<p><strong>Za avtomati\u010dno \u0161tevil\u010denje na podlagi primarnega klju\u010da je torej potrebno to dolo\u010diti \u017ee v definiciji tabele:<\/strong><\/p>\n<p>MSSql:<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE TABLE SEQ_RACUNI\n(\n&nbsp;&nbsp;SID INT IDENTITY(1,1)\n);<\/pre><br \/>\nSQLite<br \/>\n<pre lang=&#8221;sql&#8221;>CREATE TABLE SEQ_RACUNI\n(\n&nbsp;&nbsp;SID INTEGER NOT NULL\n\n, PRIMARY KEY(ID)\n);<\/pre><br \/>\nV obeh primerih smo dolo\u010dili tabelo z enim samim poljem, ki se bo avtomati\u010dno pove\u010devalo v kolikor mu \u0161tevilke ne dolo\u010dimo. Torej:<br \/>\n<pre lang=&#8221;sql&#8221;>INSERT INTO SEQ_RACUNI DEFAULT VALUES<\/pre><br \/>\n<strong>Na ta na\u010din torej v MSSql in SQLite podatkovnih bazah dobimo avtomati\u010dno \u0161tevil\u010denje.<\/strong><\/p>\n<p><em><strong>POZOR: <\/strong>Seveda pa \u2013 glede na sekvence \u2013 obstaja velika razlika. Pri sekvencah vsak zahtevek po novi \u0161tevilki samo pove\u010da trenutno vrednost sekvence; v primeru avtomati\u010dnega \u0161tevil\u010denja primarnih klju\u010dev pa se \u0161tevilke zapisujejo v podatkovno bazo in tako imamo za prvih 1000 \u0161tevilk v tabeli 1000 zapisov. To se seveda lahko preprosto re\u0161i s periodi\u010dnim brisanjem podatkovne tabele:<\/em><br \/>\n<pre lang=&#8221;sql&#8221;>DELETE FROM SEQ_RACUNI WHERE SID &amp;lt; (SELECT MAX(SID) FROM SEQ_RACUNI)<\/pre><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Naslednji na\u010din pridobivanja \u0161tevilke (prvi del, drugi del) je lastna tabela za vsako \u0161tevil\u010denje. Izmed omenjenih SQL podatkovnih baz (Oracle, MSSql in Sqlite) je Oracle \u017ee od nekdaj uporabljal sekvence in avtomati\u010dnega \u0161tevil\u010denja primarnih klju\u010dev ne pozna. Za MSSql in SQLite pa je to osnovni na\u010din avtomati\u010dnega \u0161tevil\u010denja. Kot omenjeno \u017ee zadnji\u010d je MSSql sekvence &hellip; <a href=\"https:\/\/www.matjazev.net\/blog\/2013\/12\/18\/stevilcenje-v-sql-podatkovnih-bazah-iii\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u0160tevil\u010denje v SQL podatkovnih bazah III<\/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\/1386"}],"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=1386"}],"version-history":[{"count":13,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1386\/revisions"}],"predecessor-version":[{"id":1403,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/posts\/1386\/revisions\/1403"}],"wp:attachment":[{"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/media?parent=1386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/categories?post=1386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matjazev.net\/blog\/wp-json\/wp\/v2\/tags?post=1386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}