ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã®ã³ã³ããã¹ãã§ã¯ã ã«ãŒãœã«ã¯ã ã¯ãšãªã®å®è¡ããè¿ãããçµæã»ããå ã®è¡ã®èµ°æ»ãšæäœãå¯èœã«ããããŒã¿ããŒã¹ ãªããžã§ã¯ãã§ããã«ãŒãœã«ã¯ãã€ã³ã¿ãŒã®ããã«æ©èœãããããè€éãªã¯ãšãªãå€§èŠæš¡ãªããŒã¿ã»ãããããã³é«åºŠãªããŒã¿ããŒã¹æäœãæäœããéã®å¶åŸ¡æ§ãšæè»æ§ãåäžããŸããã«ãŒãœã«ã¯äžè¬ã«ãå¹ççãªããŒã¿ã®ååŸãšç®¡çãå šäœçãªããã©ãŒãã³ã¹ãšæ©èœã«ãšã£ãŠéèŠã§ããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããŸãã
ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã䜿çšããå ŽåãSQL ã³ãã³ãã®å®è¡ãšããŒã¿ããŒã¹å ã®ããŒã¿ã®ç®¡çã«ãããŠã«ãŒãœã«ãæãã圹å²ãçè§£ããããšãéèŠã§ããåŸæ¥ãSELECT ã¹ããŒãã¡ã³ããå®è¡ããããšãããŒã¿ããŒã¹ç®¡çã·ã¹ãã (DBMS) ã¯äžèŽãããã¹ãŠã®è¡ãäžåºŠã«è¿ããŸãããã®ã¢ãããŒãã¯ãç¹ã«å€æ°ã®è¡ãåŠçããå ŽåããªãœãŒã¹ã倧éã«æ¶è²»ããéå¹çã«ãªãå¯èœæ§ããããŸããã«ãŒãœã«ã䜿çšãããšãéçºè ãããŒã¿ ãããŒãå¶åŸ¡ããçµæã»ããããäžåºŠã«ãµãã»ãããŸã㯠1 è¡ã®ã¿ããã§ããã§ããããã«ãªããã·ã¹ãã ãªãœãŒã¹ãžã®è² æ ã軜æžãããããããããã®åé¡ã軜æžãããŸãã
ã«ãŒãœã«ã¯ã AppMasterno-codeãã©ãããã©ãŒã ã䜿çšããéçºè ã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã§ãããã®ãã©ãããã©ãŒã ã®ããžã¥ã¢ã« ããŒã¿ ã¢ãã«ã®äœæãããžãã¹ ããã»ã¹èšèšãèªåçæããã REST API çµ±åã«ãããPostgreSQL äºæã®ãªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ãšå¹ççã«é£æºããããã¯ãšã³ã ã¢ããªã±ãŒã·ã§ã³ã®éçºã容æã«ãªããŸããã«ãŒãœã«ã¯è¿œå ã®å¶åŸ¡ãšæè»æ§ãæäŸããå€§èŠæš¡ãªããŒã¿ã»ãããè€éãªã¯ãšãªãå¹ççã«åŠçããŠãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšã¹ã±ãŒã©ããªãã£ãåäžãããããšãã§ããŸãã
䜿çšãããŠãã DBMS ã«å¿ããŠããŸããŸãªã¿ã€ãã®ã«ãŒãœã«ããããŸãããéåžžããããã¯ã¯ã©ã€ã¢ã³ãåŽã«ãŒãœã«ãšãµãŒããŒåŽã«ãŒãœã«ã® 2 ã€ã®äž»èŠãªã«ããŽãªã«åé¡ãããŸããã¯ã©ã€ã¢ã³ãåŽã®ã«ãŒãœã«ã¯ã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠå¶åŸ¡ãããã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã¯ãµãŒããŒããã®ããŒã¿ã®ååŸã管çããã«ãŒãœã«äœçœ®ãç¶æããå¿ èŠããããŸããäžæ¹ããµãŒããŒåŽã«ãŒãœã«ã¯ãµãŒããŒã«ãã£ãŠå¶åŸ¡ãããããŒã¿ã®ååŸãåŠçããå éšã§ã«ãŒãœã«äœçœ®ãç¶æããæå®ãããè¡ã®ã¿ãã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã«è¿ããŸãã
AppMasterã«ãã£ãŠãµããŒãããã PostgreSQL äºæããŒã¿ããŒã¹ã®ã³ã³ããã¹ãã§ã¯ããµãŒããŒåŽã®ã«ãŒãœã«ã«çŠç¹ãåœãŠãããšãã§ããŸãããããã®ã«ãŒãœã«ã¯ DECLARE CURSOR ã³ãã³ãã䜿çšããŠäœæã§ããFETCH ã³ãã³ãã䜿çšããŠæå®ãããã¯ãšãªããè¡ã 1 ã€ãã€ååŸããããã«äœ¿çšã§ããŸãã MOVEãUPDATEãDELETE ã³ãã³ããªã©ã䜿çšããŠã«ãŒãœã«ã®åäœãå¶åŸ¡ããããšãã§ããŸãã
ã«ãŒãœã«ãäœæããã«ã¯ãéçºè ã¯ãŸããã«ãŒãœã«ãè¡ããã§ããããçµæã»ãããå®çŸ©ãã SELECT ã¹ããŒãã¡ã³ããäœæããå¿ èŠããããŸãããã® SQL ã¹ããŒãã¡ã³ã㯠DECLARE CURSOR ã³ãã³ãã«æž¡ãããã«ãŒãœã«ã«äžæã®èå¥åãå²ãåœãŠãããŸãã OPEN ã³ãã³ãã¯ãã«ãŒãœã«ãã¢ã¯ãã£ãã«ããŠè¡ã®ãã©ããŒã¹ãéå§ããããã«äœ¿çšãããŸãã FETCH ã³ãã³ãã¯ãã«ãŒãœã«ããåžæã®é åºã§è¡ãååŸããã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ã«è¿ããŸãã CLOSE ã³ãã³ãã¯ãã«ãŒãœã«ãäžèŠã«ãªã£ããšãã«ãã«ãŒãœã«ã«é¢é£ä»ãããããªãœãŒã¹ãéããŠè§£æŸããããã«äœ¿çšãããŸãã
ããšãã°ããproduct_idãããquantityããããã³ãsale_priceãåãå«ããsalesããšããååã®ããŒã¿ããŒã¹ ããŒãã«ã«ã€ããŠèããŠã¿ãŸãããã sale_price ã«åºã¥ããŠãã®ããŒãã«ã®è¡ãéé ã§ååŸããã«ãŒãœã«ãäœæããã«ã¯ã次㮠SQL ã³ãã³ãã䜿çšããŸãã
sales_cursor ã«ãŒãœã«ã宣èšããŸã
補å IDãæ°éãè²©å£²äŸ¡æ ŒãéžæããŸã
販売ãã
sale_price DESC ã§æ³šæ;
sales_cursor ãéããŸãã
sales_cursor ããæ¬¡ããã§ããããŸãã
ãã®äŸã® FETCH ã³ãã³ãã¯ãsales ããŒãã«å ã® sale_price ãæãé«ã次ã®è¡ãè¿ããŸãããã¹ãŠã®è¡ãååŸããããŸã§è¿œå ã® FETCH ã³ãã³ããå®è¡ã§ããCLOSE ã³ãã³ãã䜿çšã㊠sales_cursor ãéããŸãã
æšæºã«ãŒãœã«ã«å ããŠãPostgreSQL ã¯ãçµæã»ããã®åæ¹åã®ãã©ããŒã¹ãå¯èœã«ããã¹ã¯ããŒã«å¯èœã«ãŒãœã«ããè€æ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ã«ããã£ãŠã«ãŒãœã«ãéãããŸãŸã«ããããŒã«ããã« ã«ãŒãœã«ãªã©ã®é«åºŠãªã«ãŒãœã«æ©èœããµããŒãããŠããŸãããããã®é«åºŠãªã«ãŒãœã«æ©èœã«ãããå€§èŠæš¡ãªããŒã¿ã»ãããè€éãªçµæã»ãããæäœããéã®æè»æ§ãããã«é«ãŸããŸãã
ã«ãŒãœã«ã¯åŒ·åã§ããäžæ¹ã§ãã¢ããªã±ãŒã·ã§ã³ã«ããã©ãŒãã³ã¹ã®ãªãŒããŒããããšè€éããããããå¯èœæ§ãããããšã«æ³šæããããšãéèŠã§ãããããã£ãŠãéçºè ã¯ããããæ éã«ãå¿ èŠãªå Žåã«ã®ã¿äœ¿çšããå¿ èŠããããŸããã«ãŒãœã«ã䜿çšããå Žåã¯ãã¯ãšãªãæé©åãããã©ã³ã¶ã¯ã·ã§ã³ã广çã«ç®¡çããã¢ããªã±ãŒã·ã§ã³ ã¢ãŒããã¯ãã£ãæ éã«èšç»ããŠãæé©ãªããã©ãŒãã³ã¹ãšããŒã¿ããŒã¹ã®æŽåæ§ã確ä¿ããããšãéèŠã§ãã
èŠçŽãããšããªã¬ãŒã·ã§ãã« ããŒã¿ããŒã¹ã®ã³ã³ããã¹ãã«ãããã«ãŒãœã«ã¯ãå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãè€éãªã¯ãšãªãæ±ãéçºè ã«ãšã£ãŠäžå¯æ¬ ãªããŒã«ã§ãã AppMasterã§äœ¿çšããã PostgreSQL äºæããŒã¿ããŒã¹ã®ãµãŒããŒåŽã«ãŒãœã«ã«çŠç¹ãåœãŠãå¹ççãªè¡ã®ååŸãšæäœãå¯èœã«ããããŒã¿ ãã©ããŒãµã«ã®å¶åŸ¡ãæäŸãããªãœãŒã¹æ¶è²»ãåæžããŸããã«ãŒãœã«ãé©åã«äœ¿çšããŠæé©åãããšã AppMasterno-codeãã©ãããã©ãŒã ã§éçºãããããŒã¿ããŒã¹é§ååã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšæ©èœãå€§å¹ ã«åäžãããããšãã§ããŸãã