oracle دا تەرتىپ بىر تەرەپ قىلىش مەسىلىسى
ئادەتتە MySQ ياكى SqlServer دا بىر Id بېكىتىپ شۇنى باش كونۇپكا يەنى 主键 قىلغان بولساق، بۇ Id غا كېيىن قىممەت بېرىشىمىزنىڭ زۆرۆرىيىتى بوق، يېڭى ئۇچۇر قاتساق بۇ Id نىڭ قىممىزى ئۈزلۈكسىز ھالدا، ئاپتوماتىك قوشۇلۇپ ماڭىدۇ، بۇنى كۆپىنچىمىز بىلىمىز. لېكىن Oracle دا ئىش بۇنداق ئەمەسكەن، بۇنىڭ ئۈچۈن تەرتىپ قۇرۇپ، شۇ قۇرۇلوغان تەرتىپنى ئىشلىتىدىكەنمىز.
مەسىلەن تۆۋەندىكى كودقا قارايلى:
create sequence SEQ
increment by 1
start with 1
nomaxvalue
minvalue 1
nocycle
cache 50
@misran ماۋۇ تەھرىرلىگۈچنىڭ كود ھالەتتە كۆرسىتىش ئىقتىدارى يوقمۇ ياكى مەن بىلمىدىممۇ
دېمەك يۇقارقى كودتا SEQ نامىدا بىر تەرتىپ قويىۋالدۇق، كېيىن مەلۇم Id غا قىممەت بەرمەكچى بولساق SEQ.nextval ئۇسۇلى بويىچە قىممەت بېرىدىكەنمىز.
مەن ھەل قىلماقچى بولغان مەسىلە: بۇ خىل ئۇسۇلدا مەلۇم بىر جەدۋەلدىكى Id غا قىممەت بېرىپ بولغاندىن كېيىن، يەنە بىر جەدۋەلگە SEQ.nextval ئارقىلىق قىممەت بەرسەك، ئالدىنقى جەدۋەلگە بەرگەن قىممەتنىڭ داۋامىدىن باشلاپ، نۆۋەتتىكى جەدۋەلگە قىممەت بېرىدىكەن. بۇنداق بولغاندا Id دا قىممەت ئاتلاپ كېتىش (يەنى تەرتىپلىك بولماسلىق، مەسىلەن 10 نىڭ كەينىدىن 55 كېلىپ قېلىش) مەسىلى كېلىپ چىقىدىكەن. بۇنىڭ ئۈچۈن ھەر بىر جەدۋەلگە بىر دانە تەرتىپ قۇرۇشىمىز كېرەكمۇ ياكى، باشقا ئۇسۇل بارمۇ؟
ئۇستازلار يول كۆرسەتكەن بولساڭلار .
IDنى نېمىشقا چوقۇم رەت تەرتىپ بويىچە كەلمىسە بولمامدا؟ ID پەقەت بىردىن بىر خاسلىقنى ئىپادىلىسىلا بولمىدىمۇ؟ ئەگەر چوقۇم رەت تەرتىپ بويىچە قىلىمەن دېسەڭلار پروگرامما تىلى بىلەن Idراۋۇتىدىن بىرنى قۇرۇپ شۇنى IDغا كىرگۈزۈپ ئىشلەتسىڭىز بولىدۇ. ئادەتتە Java بىلەن C# تا بۇ زاۋۇت تەمىنلەگلىك. بۇنى UUID دەپ ئاتايدۇ String تىپىدا. ئادەتتە IDنى ئاپتۇماتىك قوشۇپ ماڭىدىغان قىلغاندىن. UUID ئەۋزەلرەك .2- قەۋەتتىكى kamandazنىڭ يازمىسىدىن نەقىل
ئادەتتە IDنى ئاپتۇماتىك قوشۇپ ماڭىدىغان قىلغاندىن. UUID ئەۋزەلرەك .
مەن UUID نى ئىشلىتىپ باقماپتىكەنمەن، مۇمكىن بولسا مۇشۇ ھەقتە مىساللىرى بىلەن بىر چەشەنچە بېرەمسىز؟
3- قەۋەتتىكى goodluckنىڭ يازمىسىدىن نەقىل
2- قەۋەتتىكى kamandazنىڭ يازمىسىدىن نەقىل
ئادەتتە IDنى ئاپتۇماتىك قوشۇپ ماڭىدىغان قىلغاندىن. UUID ئەۋزەلرەك .
مەن UUID نى ئىشلىتىپ باقماپتىكەنمەن، مۇمكىن بولسا مۇشۇ ھەقتە مىساللىرى بىلەن بىر چەشەنچە بېرەمسىز؟
ئادەتتە ساندان تەرەپتە IDنى (varchar(35 ئۇزۇنلىقتا تەڭشەپ ئۇنى 主键 قىلىپ تەڭشىگەندىن كېيىن . Java ياكى C# تا پروگرامما يازغاندا UUID ھاسىل قىلىپ شۇنى ID غا ساقلىسىڭىز بولىدۇ.
java دا UUID ئادەتتە util بوقچىسىنىڭ ئىچىدە بولىدۇ. يەنە util.UUID دېگەن تۈرشۇ.
بۇنى ئىشلەتكەندە UUID نىڭ randomUUID دېگەن مىتوتى ئارقىلىق قۇرسىڭىز بولىدۇ.
UUID uuid=UUID.randomUUID بۇ ئارقىلىق uuid غا ئىرىشىمىز ئاندىن بۇنى String غا ئايلاندۇرۇپ ساندان دېكى id غا ساقلىساق بولىدۇ.
C# تا UUIDغا ()System.Guid.NewGuid ئارقىلىق ئىرىشىمىز. ئاندىن بۇنى String غا ئايلاندۇرۇپ سانداندېكى id غا ساقلىساق بولىدۇ.
ئۇنىڭدىن باشقا نۇرغۇنلىغان 3-تەرەپ پروگگىرامما ئاچقۇچىلارمۇ UUID تەمىنلىگەن. سىز قايسىنى ئىشلەتسىڭىز بولاۋىرىدۇ. پەرق چوڭ ئەمەس.
ھازىر مەيلى oracle شىركىتى بولسۇن، مەيلى microsoft بولسۇن، ياكى google بولسۇن ھەممىسى مۇشۇ UUID نى ئىشلىتىشنى تەۋسىيە قىلىدۇ. بىخەتەرلىكىمۇ ساندان ئاپتۇماتىك قۇشۇپ ھاسىللىغان id دىن كۆپ يۇقىرى.
بىلۋالدىم، رەھمەت سىزگە .