Derby ã?¯æº–備済ã?¿æ–‡ã?®ä¾?å˜é–¢ä¿‚を追跡ã?—ã?¾ã?™ã€‚準備済ã?¿æ–‡ã?¨ã?¯å®Ÿè¡Œå‰?ã?«ã‚³ãƒ³ãƒ‘イルã?•れã?ŸSQLæ–‡ã?®äº‹ã?§ã?™ã€‚典型的ã?ªã‚·ãƒŠãƒªã‚ªã?¨ã?—ã?¦ã€?ã?“れらã?¯æº–å‚™(プレコンパイル)ã?•れã?Ÿå¾Œã€?複数回実行ã?•れã?¾ã?™ã€‚
準備済ã?¿æ–‡ã?¯ãƒ‡ã‚£ã‚¯ã‚·ãƒ§ãƒŠãƒªã?®æƒ…å ±ã‚„ã€?ã??れ自身ã?‹ã‚‰å?‚ç…§ã?™ã‚‹ä»–ã?®æ–‡ã?«ä¾?å˜ã?—ã?¾ã?™ã€‚(ディクショナリã?®æƒ…å ±ã?¨ã?¯ã€?表・列・制約・索引・ビュー・トリガã?®ã?“ã?¨ã?§ã?™ã€‚) 準備済ã?¿æ–‡ã?Œä¾?å˜ã?—ã?¦ã?„るディクショナリã?®æƒ…å ±ã‚„æ–‡ã?Œã€?ç ´æ£„ã?•れã?Ÿã‚Šå¤‰æ›´ã?•れã?Ÿã‚Šã?™ã‚‹ã?¨ã€?内部的ã?«æº–備済ã?¿æ–‡ã?¯ç„¡åйã?¨ã?ªã‚Šã€?Derbyã?¯æº–備済ã?¿æ–‡ã?Œå®Ÿè¡Œã?•れるã?¨ã??ã€?自動的ã?«å†?コンパイルを行ã?Šã?†ã?¨ã?—ã?¾ã?™ã€‚ ã‚‚ã?—ã?“ã?®ã?¨ã??ã€?準備済ã?¿æ–‡ã?®å†?コンパイルã?Œå¤±æ•—ã?™ã‚‹ã?¨ã€?実行ã?¯å¤±æ•—ã?—ã?¾ã?™ã€‚ ã?—ã?‹ã?—ã?ªã?Œã‚‰ã€?ã‚‚ã?—何らã?‹ã?®å¯¾å¿œã‚’行ã?£ã?¦(ç„¡ã??ã?ªã?£ã?Ÿè¡¨ã‚’復活ã?•ã?›ã‚‹ã?ªã?©ã?—ã?¦)失ã‚?れã?Ÿä¾?å˜æ€§ã‚’å…ƒã?«æˆ»ã?›ã‚‹ã?®ã?ªã‚‰ã€?失敗ã?—ã?Ÿæº–備済ã?¿æ–‡ã‚’æˆ?功è£?ã?«å®Ÿè¡Œã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ã?“れã?¯ã€?Derbyã?Œå†?実行ã?Œè¦?求ã?•れã?Ÿã?¨ã??ã€?å†?コンパイルを自動的ã?«è¡Œã?†ã?‹ã‚‰ã?§ã?™ã€‚
ã?Šäº’ã?„ã?«ä¾?å˜ã?—ã?Ÿæ–‡-UPDATE WHERE CURRENTæ–‡ã?¯å?‚ç…§ã?™ã‚‹æ–‡ã?«ä¾?å˜ã?—ã?¾ã?™ã€‚ä¾?å˜ã?™ã‚‹æ–‡ã‚’ç ´æ£„ã?™ã‚‹ã?¨ã€?UPDATE WHERE CURRENTæ–‡ã?¯ç„¡åйã?«ã?ªã‚Šã?¾ã?™ã€‚
ã?•らã?«æº–備済ã?¿æ–‡ã?®çµ?æžœã?Œã‚ªãƒ¼ãƒ—ンã?—ã?¦ã?„ã‚‹å ´å?ˆã€?ã?‚る種ã?®DDLæ–‡ã?®å®Ÿè¡Œã‚’妨ã?’ã?¾ã?™ã€‚
ã??れã?žã‚Œã?®æ–‡ã?«å¯¾å¿œã?—ã?Ÿãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã?®é ?ã?«ã?¯ã€?ã??ã?®æ–‡ã?Œæº–å‚™ã?•れã?Ÿå ´å?ˆã€?ã?©ã?®ã‚ˆã?†ã?ªã?“ã?¨ã‚’ã?™ã‚‹ã?¨ç„¡åйã?«ã?ªã‚‹ã?®ã?‹ã?Œæ›¸ã?‹ã‚Œã?¦ã?„ã?¾ã?™ã€‚
ij> CREATE TABLE mytable (mycol INT); 0 rows inserted/updated/deleted ij> INSERT INTO mytable VALUES (1), (2), (3); 3 rows inserted/updated/deleted -- ã?“ã?®ä¾‹ã?§ã?¯ijã?®prepareコマンドを使ã?„ã?¾ã?™ã€‚ -- ã?“ã?®ã‚³ãƒžãƒ³ãƒ‰ã?«ã‚ˆã‚Šæ–‡ã?Œæº–å‚™ã?•れã?¾ã?™ã€‚ ij> prepare p1 AS 'INSERT INTO MyTable VALUES (4)'; -- p1ã?¯mytableã?«ä¾?å˜ã?—ã?¾ã?™; ij> execute p1; 1 row inserted/updated/deleted -- Derbyã?¯å†?コンパイルã?›ã?šã?«æ–‡ã‚’実行ã?—ã?¾ã?™ã€‚ ij> CREATE INDEX i1 ON mytable(mycol); 0 rows inserted/updated/deleted -- æ–°ã?—ã?„索引ã?®ã?Ÿã‚?ã€?p1ã?¯ä¸€æ™‚çš„ã?«ç„¡åйã?¨ã?ªã‚Šã?¾ã?™ã€‚ ij> execute p1; 1 row inserted/updated/deleted -- Derbyã?¯è‡ªå‹•çš„ã?«p1ã‚’å†?コンパイルã?—ã?¦ã€?実行ã?—ã?¾ã?™ã€‚ ij> DROP TABLE mytable; 0 rows inserted/updated/deleted -- Derbyã?§ã?¯ä»¥ä¸‹ã?®ã‚ˆã?†ã?«è¡¨ã‚’ç ´æ£„ã?™ã‚‹ã?“ã?¨ã?Œã?§ã??ã?¾ã?™ã€‚ -- ã?“れã?¯p1ã?®çµ?æžœã?Œé–‰ã?˜ã?¦ã?„ã‚‹ã?‹ã‚‰ã?§ã?™ã€‚ -- ã?—ã?‹ã?—ã?ªã?Œã‚‰p1ã?¯ä¸€æ™‚çš„ã?«ç„¡åйã?¨ã?ªã‚Šã?¾ã?™ã€‚ ij> CREATE TABLE mytable (mycol INT); 0 rows inserted/updated/deleted ij> INSERT INTO mytable VALUES (1), (2), (3); 3 rows inserted/updated/deleted ij> execute p1; 1 row inserted/updated/deleted -- p1ã?¯ç„¡åйã?¨ã?ªã?£ã?¦ã?„ã‚‹ã?®ã?§ã€?Derbyã?¯å®Ÿè¡Œã?®å‰?ã?«å†?コンパイルを行ã?„ã?¾ã?™ã€‚ -- å†?コンパイルã?¯æˆ?功ã?—ã?¦ã€?æ–‡ã?¯å®Ÿè¡Œã?§ã??ã?¾ã?™ã€‚ ij> DROP TABLE mytable; 0 rows inserted/updated/deleted -- p1ã?¯ç„¡åйã?§ã?™ã€‚ -- 今度ã?¯æœ€ã‚³ãƒ³ãƒ‘イルã?—よã?†ã?¨ã?—ã?¦ã‚‚失敗ã?™ã‚‹ã?®ã?§ã€? -- 実行も失敗ã?§ã?™ã€‚ ij> execute p1; ERROR 42X05: Table/View 'MYTABLE' does not exist.