PHP, JavaSCRIPT, PostgreSQL
JavaSCRIPT RAW bibliotekos demonstaracinė-testinė aplinka     
ir kita, sukaupta per 15 metų, programavimo patirtis

PostgreSQL

Įvadas   |   SQL  |   DB struktūra  

ID unikalių numerių generavimas nenuspėjamai

Kartais ID numeris turi būti nenuspėjamas tai yra ne eilės tvarka. Tai tam kad netyčia nesuvestum kito numerio vien tik pakeitus vieną skaitmenį arba eilės tvarka negalėtų nuskanuoti visų, sakysim, darbuotojų

Sugeneruotų numerių pavyzdys:
NuoseklūsNenuspėjami
50005000839889
50015001800247
50025002524763
50035003659137
50045004584952
50055005310178
50065006981501
50075007552321
50085008564947
50095009270187
50105010611980
50115011966321

Žalioji dalis užtikrina unikalumą antroji pusė - nenuspėjamumą

Sekos(SEQUENCE) scriptas:
CREATE SEQUENCE files_id_seq
    START WITH 5000000000
    INCREMENT BY 1000000
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

select  nextval('files_id_seq'::regclass) 
+ trunc(random() * (998555 - 111555)::double precision + 111555::double precision)::bigint as id ; 

-- atskirais atvejais galima ir taip:

CREATE TABLE files (
    id bigint NOT NULL 
		default (nextval('files_id_seq'::regclass) 
			+ trunc(random() * (998555 - 111555)::double precision + 111555::double precision)::bigint)
			 	primary key

	-- ... kiti stulpeliai
)


* Svarbi salyga: „INCREMENT BY 1000000 “ reikšmė turi būti didesnė už atsitiktinio skaičiaus intervalo generavimą.


 
 
©2017 UAB Fromris & Ričardas Dabašinskas
www.fromris.lt & www.ricardas.eu
Programavimas PHP, Javascript, PostgreSQL:    
Tel.: +370 698 30482 [LT,RU], el. paštas: info@fromris.lt