Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Firebird Π Π£ΠšΠžΠ’ΠžΠ”Π‘Π’Π’Πž Π ΠΠ—Π ΠΠ‘ΠžΠ’Π§Π˜ΠšΠ БАЗ ДАННЫΠ₯Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 52

Автор Π₯Π΅Π»Π΅Π½ Π‘ΠΎΡ€Ρ€ΠΈ

УстановлСнноС соглашСниС ΠΏΠΎ имСнованию Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Firebird для любой ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ - использованиС Ρ‚Ρ€Π΅Ρ…ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ суффикса fdb для ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π° для ΠΈΠΌΠ΅Π½ Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² f01, f02 ΠΈ Ρ‚.Π΄. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соглашСниС - Ρ„Π°ΠΉΠ»Ρ‹ Firebird ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ вовсС.

По ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ извСстных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сСрвСрами XP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌΠΈ SystemRestore для Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ gdb, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ рСкомСндуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ суффикс Ρ„Π°ΠΉΠ»ΠΎΠ² InterBase ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π² Firebird.

Имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… бСзопасности- security.fdb Π² Ρ€Π΅Π»ΠΈΠ·Π΅ 1.5 ΠΈ Π²Ρ‹ΡˆΠ΅, isc4.gdb Π² Ρ€Π΅Π»ΠΈΠ·Π΅ 1.0.x- Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. К соТалСнию, Ρƒ Firebird 1.0.x Π½Π΅Ρ‚ срСдств измСнСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ суффикса gdb.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ схСмы

Π’ Firebird, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… систСмах управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… SQL, Π²Ρ‹ создаСтС Π²Π°ΡˆΡƒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ схСма Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ· спСциализированного подмноТСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SQL, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ языком опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… (Data Definition Language, DDL). ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² DDL Π² тСкстовом Ρ„Π°ΠΉΠ»Π΅ называСтся скриптом. Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈΠ»ΠΈ мноТСство скриптов ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ isql нСпосрСдствСнно ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструмСнта, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ друТСствСнный интСрфСйс.

Бписок Ρ‚Π°ΠΊΠΈΡ… инструмСнтов см. Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 5.

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Firebird

Π‘ΠΊΡ€ΠΈΠΏΡ‚ для создания ΠΈ измСнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠΌ опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ скриптом DDL. Π‘ΠΊΡ€ΠΈΠΏΡ‚ DDL ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ isql, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ SET <ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€>. COMMIT Ρ‚Π°ΠΊΠΆΠ΅ являСтся допустимым ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π² скриптС.


! ! !

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° isql (ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ SQL) являСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, доступной Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…; Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° поставки Firebird. Π’ΠΎ всСх случаях, ΠΊΡ€ΠΎΠΌΠ΅ встроСнного сСрвСра для Windows, isql инсталлируСтся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /bin ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Firebird. ΠŸΠΎΠ»Π½Ρ‹Π΅ инструкции см. Π² Π³Π»Π°Π²Π΅ 37.

. ! .


Π”Ρ€ΡƒΠ³ΠΈΠ΅ скрипты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны для добавлСния основных, ΠΈΠ»ΠΈ "ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…", Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, измСнСния столбцов, прСобразования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ выполнСния Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ скрипты Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ скриптами DML (для языка манипулирования Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Data Manipulation Language).

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ DDL ΠΈ DML ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² скриптах. Однако для устранСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… строго рСкомСндуСтся Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ DDL ΠΈ DML Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… скриптах. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° скриптов позволяСт "ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ" скрипты, связывая ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» скрипта с Π΄Ρ€ΡƒΠ³ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° isql INPUT <спСцификация_Ρ„Π°ΠΉΠ»Π°>.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ скрипта Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² строгом порядкС. ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SET AUTODDL позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ содСрТимого скрипта, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ вСсь скрипт.

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скрипты?

ΠžΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ являСтся использованиС скриптов DDL для создания вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΅Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ нСсколько ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для этого.

* Π‘Π°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘ΠΊΡ€ΠΈΠΏΡ‚ являСтся тСкстовым Ρ„Π°ΠΉΠ»ΠΎΠΌ, просто ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Π»ΡŽΠ±Ρ‹ΠΌ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ (ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹) Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ тСксты ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ИзмСнСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Ρ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

* Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ всСх описаний Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² скриптах позволяСт созданиС схСмы тСсно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ проСктирования Π·Π°Π΄Π°Ρ‡ ΠΈ пСрСсмотра ΠΊΠΎΠ΄Π°.

* ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΠ΅ ΠΈ отслСТиваСмоС созданиС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ восстанавливаСмая схСма являСтся Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ восстановлСния систСмы послС сбоСв Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… организациях.

* АккуратноС конструированиС ΠΈ рСконструированиС ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠΏΡ‹Ρ‚Π½Ρ‹Π΅ программисты Firebird часто ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ скриптов DDL, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… для выполнСния ΠΈ подтвСрТдСния Π² Π½ΡƒΠΆΠ½ΠΎΠΌ порядкС. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ·ΠΆΠ΅ зависимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π° Π½ΠΈΡ… ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ.

Π§Ρ‚ΠΎ находится Π² скриптах DDL?


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ SQL

Π‘ΠΊΡ€ΠΈΠΏΡ‚ DDL содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² SQL (CREATE, ALTER, DROP) для создания, измСнСния ΠΈΠ»ΠΈ удалСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ DML, хотя рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ DDL ΠΈ DML Π² Ρ€Π°Π·Π½Ρ‹Ρ… скриптах.


! ! !

Π‘ΠžΠ’Π•Π’. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ‰Π΅ΠΉ являСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (INPUT) Π’ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ скриптов DDL ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ скриптов, содСрТащих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ INSERT для Π²Π²ΠΎΠ΄Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ статичных ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ для добавлСния Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ DDL ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎ появлСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² DML.

. ! .


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ языка (PSQL), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ для Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ², Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² скрипты. Π‘Π»ΠΎΠΊΠΈ PSQL ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΡƒ Π² скриптах Π² зависимости ΠΎΡ‚ символов Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (см. Π΄Π°Π»Π΅Π΅ Ρ€Π°Π·Π΄. "Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°").


ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² Π΄Π²ΡƒΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ….


Π‘Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²

Π‘Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² скриптах DDL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ соглашСния языка Π‘:

/* Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ распространяСтся Π½Π° мноТСство строк Π² скриптС */

Π‘Π»ΠΎΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° isql, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Он начинаСтся символами /* ΠΈ заканчиваСтся символами */.


Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ стиля /*...*/ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСн Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠ°ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ:


CREATE TABLE USERS1 (

USER_NAME VARCHAR( 128 )

/* security user name */

, GROUP_NAME VARCHAR(128)

/* not used on Windows */

, PASSWD VARCHAR( 32 )

/* will be stored encrypted */

, FIRST_NAME VARCHAR(96) /* Defaulted */

, MIDDLE_NAME VARCHAR( 96 ) /* Defaulted */

, LAST_NAME VARCHAR( 96 ) /* Defaulted */

, EULL_NAME VARCHAR( 290 ) /* Computed */

) ;


ΠžΠ΄Π½ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ скриптах Firebird Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ соглашСниС ΠΏΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠΉ строки - Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ минус:

-- ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ Ρ€Π΅Π»ΠΈΠ·Π΅ 1.0.x этот ΡΡ‚ΠΈΠ»ΡŒ коммСнтария Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован для Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ коммСнтария ΠΈΠ»ΠΈ для "закоммСнтирования" части строки.

Π’ Ρ€Π΅Π»ΠΈΠ·Π΅ 1.5 ΠΈ Π²Ρ‹ΡˆΠ΅ соглашСниС ΠΏΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ -- ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π² любом мСстС строки для "коммСнтирования" всСго, начиная с ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


CREATE TABLE MET_REPORT (

ID BIGINT NOT NULL, -- VARCHAR(40), Π½Π΅Π²ΠΈΠ΄ΠΈΠΌ

WEATHER_CONDITIONS

BLOB SUB_TYPE TEXT,

LAST_REPORT TIMESTAMP) ;


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ isql

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ isql SET AUTODDL, SET SQL DIALECT, SET TERM ΠΈ INPUT ΡΠ²Π»ΡΡŽΡ‚ΡΡ допустимыми ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² скриптах Firebird - подробности ΠΎΠ± этих ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… см. Π² Π³Π»Π°Π²Π΅ 37.


Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°

ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² скриптС, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ символом Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Ρ‚ΠΎΡ‡ΠΊΠ° с запятой (;).

Π‘ΠΈΠΌΠ²ΠΎΠ» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² языка ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (PSQL) ΠΏΡ€ΠΈ использовании Π² скриптС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ SET TERM[33].


Π’Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ язык ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (PSQL)

PSQL Π½Π΅ допускаСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠ² Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ с запятой (;). Π’Π°ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ CREATE PROCEDURE, RECREATE PROCEDURE, ALTER PROCEDURE, CREATE TRIGGER ΠΈ ALTER TRIGGER вмСстС с ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ PSQL ΡΠ²Π»ΡΡŽΡ‚ΡΡ слоТными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ с ΠΈΡ… собствСнными ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ с запятой для различСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° PSQL.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² скриптах Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… скрипта Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² PSQL для Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ². ПослС послСднСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° END, ΠΊΠΎΠ³Π΄Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ исходный тСкст ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, слСдуСт Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SET TERM. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


CREATE GENERATOR GEN_MY_GEN ;

SET TERM ^^;

CREATE TRIGGER BI_TABLEA_0 FOR TABLEA

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.PK IS NOT NULL) THEN

NEW.PK = GEN_ID(GEN_MY_GEH, 1);

END ^^

SET TERM ; ^^

. . .


Π›ΡŽΠ±Π°Ρ строка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


SET TERM @ ! #;

CREATE PROCEDURE...

AS

BEGIN

. . . ;

. . . ;

END @!#

SET TERM ;@!#

/**/

COMMIT;

/**/

SET TERM +;

CREATE PROCEDURE...

AS

BEGIN

. . .;

. . . ;

END +

SET TERM ; +

/**/

COMMIT;


ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ SQL Π±Π΅Π· сообщСний Π½Π΅ выполняСтся, Ссли Π΅Π³ΠΎ тСкст слСдуСт Π·Π° символом Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ строкС. ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π½ΠΎ Π½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹.

НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ COMMIT Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ:

ALTER TABLE ATABLE ADD F2 INTEGER; COMMIT;

Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ:

ALTER TABLE ATABLE ADD F2 INTEGER; /* счСтчик Π±ΠΎΠ±ΠΎΠ² */

COMMIT;

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги ΠΏΠΎ использованию Ρ„Π°ΠΉΠ»ΠΎΠ² скриптов описаны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….


Π¨Π°Π³ 1: созданиС Ρ„Π°ΠΉΠ»Π° скрипта

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ любой подходящий тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. На стадии обучСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ DDL Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ COMMIT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ. Когда Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ большС ΠΎΠΏΡ‹Ρ‚Π°, Π²Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Π±Π»ΠΎΠΊΠ°Ρ…, примСняя SET AUTODDL ON ΠΈ SET AUTODDL OFF с Ρ†Π΅Π»ΡŒΡŽ управлСния взаимозависимостями ΠΈ ΠΏΡ€ΠΈ тСстировании/ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ скриптов.