Мир interbase · borland interbase 6.5 доступен в виде 90-дневной...

506
Алексей Ковязин, Сергей Востриков Мир InterBase Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebird/Yaffil КУДИЦ-ОБРАЗ Москва 2003

Upload: vukhuong

Post on 06-May-2018

294 views

Category:

Documents


10 download

TRANSCRIPT

  • ,

    InterBase

    , InterBase/Firebird/Yaffil

    - 2003

  • 32.973-018 ., .

    InterBase. , InterBase/Firebird/Yaffil. 2-, .: -, 2002. 496 .

    ISBN 5-93378-074-X , -

    InterBase . , InterBase.

    , - InterBase.

    InterBase FIBPlus, OLE DB IBProvider, InterBase API. - ODBC JDBC InterBase.

    InterBase , . InterBase, .

    InterBase , InterBase 6.x Yaffil, InterBase.

    . ., . . InterBase. ,

    InterBase/Firebird/Yaffil

    -

    . .

    071806 2.03.99. " -" 119034, , ., . 21, . 1. .: 333-82-11, [email protected]

    28.03.2003. 70100/16. . . . . . . 40. 3000.

    Microsoft Windows 95, Microsoft Windows 98, Microsoft Windows Me, Microsoft Windows NT, Microsoft Windows 2000, Microsoft Windows XP, Internet Explorer Microsoft. Delphi, C++ Builder, Kylix, InterBase, IBConsole Borland. , , .

    ISBN 5-93378-074-X ., ., 2002-2004 , " -", 2002-2003

  • 3-

    3 1- InterBase. . Borland InterBase Firebird, Yaffill Firebird 2.0, Firebird, - - - Firebird SQL Development Guide.

    3- InterBase. , InterBase Firebird 8 , - InterBase Firebird . ( - ) InterBase Delphi.. InterBase/Firebird , .

    3- , InterBase Firebird -. , , -, , .

  • 4

    2-

    4 2002 3000 -. 3 .

    ( , , - ) InterBase Firebird, , InterBase - . 3 - InterBase, Firebird Yaffil. - , , , , .

    2- -, . , , .

    , - InterBase Express (IBX), , - InterBase, Firebird Yaffil.

    , 3 - Borland InterBase, Firebird Yaffil. , ?

    29 2002 InterBase 7. , , , InterBase 7.

    , , 7- InterBase. - , , 2000 , . , InterBase 6.0.x, Firebird 1.0 InterBase 6.5 - backup/restore ( ).

    . Borland, InterBase 6, InterBase 6.5. , - Firebird 1.0 , 6.0, Borland InterBase 6.0/6.5.

    Firebird InterBase, . , Firebird, - 6- InterBase Open Source . , Borland.

    , InterBase, Firebird Yaffil.

  • InterBase 5

    InterBase 7 -. , InterBase 6.5, - backup/restore. , Firebird 1.0, InterBase 6.0 . , 1- , 5.6. , , Borland Borland InterBase Borland InterBase. , Firebird 1.5, - Firebird Developers. 2 ( 3, Yaffil).

    , InterBase 4.x5.x6.x Firebird 1.0 - - , .

    Borland InterBase Open Source Firebird . , - .

  • 1-

    !

    , - InterBase. - , - - InterBase, .

    . InterBase http://ib.demo.ru ( http://www.ibase.ru), . - Media Kit - Borland InterBase 5, . , , InterBase . , - InterBase , , , .

    InterBase , , Microsoft Windows NT, Windows 2000, Windows XP, Windows 98/ME, Linux Unix-. InterBase - -. InterBase, -: TCP/IP, NetBEUI/named pipes, IPX/SPX.

    InterBase, , - , - -! , - (transaction log), , InterBase .

    InterBase . , , - , -. - .

    InterBase ANSI SQL 92, SQL . - , InterBase : -, , , . - InterBase , , - , (event alerters), BLOB-. , , , ,

  • InterBase 7

    , , InterBase.

    InterBase - SQL- - User Defined Functions, BLOB- BLOB-. , InterBase , - Intranet-, .

    , InterBase: , - , .

    InterBase, InterBase 6.x, InterBase, - , . . 5.x 4.x. , , InterBase 6.x.

    InterBase 6.x -, , - Borland InterBase 6.0. Borland InterBase 6.0 Open Edition, Borland InterBase 6.5, Firebird 1.x Yaffil.

    InterBase 6.0 Open Edition, Firebird Yaffil Open Source-, InterBase Public License. Borland InterBase 6.5 90- TRIAL-. - , .

    , - , -. InterBase , , - ().

  • 8 1.

    - . , , -, .

    - , InterBase.

    , . -, . , Ded!

    , : , , , . , .

    , , , , -, , , , .

    InterBase , . . (Ann W. Harrison) - . (Claudio R. Valderrama) -, .

    : - , - .

    FIBPlus. - FIBPlus, .

    , : , , , .

    , - InterBase-.

  • 1

    InterBase

    InterBase, . InterBase - , , - . InterBase , InterBase - - , . - InterBase - , . InterBase , , , - , ICQ WinAmp.

    ?

    InterBase, , (-) . , - . - InterBase 6.0., , InterBase 6 -. InterBase 6.x Firebird ( 1.0 1.5), Borland InterBase (6.5, 7.0, 7.1 b 7/5) Yaffil (1.0).

    Firebird InterBase 6.x. (open source). - InterBase Software Corporation.

    3- - Firebird 1.5.1 - InterBase.

    Borland -, 7.1 Service Pack 2. - . - 90 . InterBase 7.1 Borland.

    Firebird InterBase, InterBase 6.x Yaffil, Firebird 2001 . Yaffil Windows, . 2004 Yaffil Firebird , Firebird 2.0, 2005 .

  • 10 1.

    , InterBase - - backup/restore (. (. 4)). , Firebird InterBase , .

    InterBase , - . , Open Source , Bolrland InterBase Firebird . - (, www.interbase-world.com) .

    InterBase ( ), , .

    InterBase? - www.interbase-world.com, http://www.ibase.ru. InterBase, InterBase - .

    InterBase http://sourceforge.net/projects/interbase, Firebird http://sourceforge.net/projects/firebird. , - .

    - Delphi Client/Server Enterprise Edition (3.x, 4.x, 5.x 6.x) InterBase, 5.x/6.x. , - , , - InterBase.

    InterBase, , - . , Windows ( 95 NT 4.0). , : Linux/Unix, FreeBSD, Solaris, Mac OS X Darwin. Windows Linux, , - .

    , : - , .

    InterBase Windows

    (, ) Borland InterBase 7.x 70 . - 5-10 - , -

  • InterBase 11

    Java-based InstallAnywere. InterBase 7.1 .

    Firebird 1.5.1 - , .

    , , , - IntrerBase/Firebird. - Firebird 1.5.1 (www.firebirdsql.org). - , .

    , Firebird, InterBase, . Windows, -, Windows NT/2000/XP, InterBase- Windows, Windows 95/98/Me.

    ! InterBase - . , . gds32.dll , - Path ( : gds32.dll , ).

    , , , Firebird 1.5.1. Next . InterBase Public License. I agree . -, Firebird. -. C:\Program Files\Firebird. - C:\IBServer.

    , Next . , . 1.1. ( , Firebird, ). , - . , . , 16 .

    , InterBase, - , Server for Windows, Client for Windows Command Line Tools. InterBase InterBase (. 4).

    Next . ! InterBase is running on this machine . , -

  • 12 1.

    InterBase (, Delphi). InterBase, . .

    , , -, Finish.

    Firebird . , -. Windows 95/98/Me, InterBase , NT 4/2000 (service) - InterBase Manager (Services).

    1.1. Firebird

    InterBase Linux/Unix

    InterBase Linix , Windows, . Linux InterBase ( Firebird) SuperServer Classic. , , "Classic SuperServer", , SuperServer.

    Linux rpm ( Linux RedHat) tar.gz ( -). , Linux/Unix. (, www.firebirdsql.org) .

  • InterBase 13

    , :

    root.

    Firebird SuperServer /etc/hosts.equiv localhost 127.0.0.1. , -.

    , IP- hosts.equiv DNS.

    rpm :

    $rpm Uvh InterBase.x.x.x.rpm

    InterBase.x.x.x.rpm . tar.gz -

    :

    $tar xzf InterBase.x.x.x.tar.gz

    $cd install

    $./install.sh

    Linux- InterBase (Firebird ). - SuperServer , Classic (. "Classic SuperServer" (. 4)).

    , InterBase 6.x/Firebird 1.0. , Linux , Linux/Unix.

    InterBase/Firebird, , . ( , - ).

    - /opt/InterBase, /usr/InterBase /usr/include . SYSDBA, - -: rpm - /opt/InterBase/SYSDBA.password, tar.gz .

    InterBase/Firebird Linux? c Classic inetd, , InterBase/Firebird ( InterBase 4.x, 5.x 3050, Firebird 3050, ), inetd . , .

    InterBase SuperServer /etc/rc.d/init.d/Firebird .

    Linux - :

    $cd /opt/InterBase/bin

    $isql user sysdba password

  • 14 1.

    >connect /opt/InterBase/examples/employee.gdb;

    >select * from sales;

    >quit;

    :

    $cd /opt/InterBase/bin

    $isql user sysdba password

    >connect :/opt/InterBase/examples/employee.gdb;

    >select * from sales;

    >quit;

    Sales, InterBase/Firebird .

    InterBase

    InterBase . , . - .

    InterBase IBConsole. , , - InterBase - .

    , - (. . Borland), InterBase.

    IBExpert (www.ibexpert.com), IBManager (www.ibmanager.com), IBWorkbench IBAdmin. (freeware), . . , (shareware), . . . - - " InterBase".

    . , , , ! - c InterBase.

    - isql , . - , - ?

    , :

  • InterBase 15

    1) InterBase/Firebird, . 2) gds32.dll . 3) 4) .

    , -- InterBase -, InterBase.

  • , . - (, IBExpert: http://www.blazetop.com).

    , InterBase.

    BlazeTop, "\\". InterBase. . 1.2.

    . 1.2. InterBase

    . : . , - InterBase. , - . TCP/IP, , - IP- InterBase. . InterBase SYSDBA, . - SYSDBA. masterkey. - . "\\ ". / (. 1.3).

    ServerName (, ). DatabaseName . BlazeTop, - - AliasName. - . - : PageSize ( ), CharSet (- ), SQLDialect

  • 17

    ( InterBase 6.x Firebird). , .

    . 1.3.

    , , SYSDBA. BlazeTop - DDL- , -. , (connection string).

    , BlazeTop , . InterBase - Windows ( " InterBase" ), TCP/IP, , , :

    :

    :

    1. , InterBase -, Operation Guide Network configuration.

    2. , InterBase- ( -) Windows. - . , InterBase- *nix, -

    : /opt/database/firstbase.gdb.

  • 18 1.

    , firstbase.gdb - C:\Temp, :

    localhost:C:\temp\firstbase.gdb

    localhost , , C:\Temp , firstbase.gdb . Localhost , (.. , , , - ) . - , , server_nt, - C:\database, , :

    server_nt:C:\database\firstbase.gdb

    server_nt C:\Database, . , server_nt ( - ) InterBase . . - . - , . , -, ( , ).

    , netbios sharename, , , . - ( ) .

    , 1.3. - . : 1 3. ?

    1 3 - :

    3 , , , DATE TIME.

    3 , - . Table1 TABLE1 -, Table1 TABLE1 (TABLE1) - .

    3 ( 1). , 1 25+5 - 30. 3 .

    , . , Borland Database Engine (BDE) 5.2 3- - .

  • 19

    SQLDialect, , , - , . , , .

    :

    3, -, InterBase, 3;

    1, - InterBase, , BDE.

    , 1 3, 2? - 2 , 1 3.

    InterBase c . , , InterBase, . - 4096 , . ? , , (, 10 , - 255 ) , InterBase - ! , .

    , - , , ?

    :

    NTFS , 4096 . , NTFS- 4096 ( , -, ).

    FAT32 (, FAT16 - ) 8192 16384 ( , 16384 - InterBase).

    (CharSet)

    . , - . , WIN1251. , -

  • 20 1.

    NONE, - .

    , . -, - , .

    - WIN1251 .

    . (OWNER). , , .

    InterBase SYSDBA. - . SYSDBA , , SYSDBA .

    , " ", , . - (USERS) (ROLES) , , . InterBase . " IInterBase: , " (. 4).

    SYSDBA. - . SYSDBA masterkey. , , , .

    InterBase 'my.gdb' - ':\Database' . - 16384 , WIN1251 , . SQLDialect 3.

    InterBase/Firebird , , "-" . . SQL ( ), - , WINDOWS, SQL- isql.exe.

  • 21

    . : crebas.sql:

    SET SQL DIALECT 3;

    SET NAMES WIN1251;

    CREATE DATABASE 'Localhost:C:\Database\my.gdb'

    USER 'SYSDBA' PASSWORD 'masterkey'

    PAGE_SIZE 16384

    DEFAULT CHARACTER SET WIN1251;

    runscr.bat:

    C:\IBServer\Bin\isql.exe i C:\temp\crebas.sql

    , isql.exe ( SQL, InterBase) crebas.sql.

  • , (. [1, . 4]), , - . InterBase -. , - 1- 3- InterBase.

    , InterBase . , - , , ; , "". -, "", . "" (. ". " (. 1)), , . .

    , , , - .

    InterBase 12 , . 6 :

    INTEGER SMALLINT;

    FLOAT DOUBLE PRECISION;

    NUMERIC DECIMAL;

    , / DATE, TIME TIMESTAMP;

    CHARACTER ( CHAR) VARYING CHARACTER (VARCHAR);

    BLOB.

    , .. , BLOB.

    InterBase , SQL92, , , "" BLOB.

    InterBase - , INTEGER. !

  • 23

    BLOB , - Binary Large OBject " -". , BLOB InterBase, SQL-.

    , . - InterBase .

    < datatype> =

    {SMALLINT | INTEGER | FLOAT | DOUBLE PRECISION}[ ]

    | {DATE | TIME | TIMESTAMP} [ ]

    | {DECIMAL | NUMERIC} [( precision [, scale])] [ ]

    | {CHAR | CHARACTER | CHARACTER VARYING | VARCHAR} [( int)]

    [ ] [CHARACTER SET charname]

    | {NCHAR | NATIONAL CHARACTER | NATIONAL CHAR}

    [VARYING] [( int)] [ ]

    | BLOB [SUB_TYPE { int | subtype_name}] [SEGMENT SIZE int]

    [CHARACTER SET charname]

    | BLOB [(seglen [, subtype])]

    , , , , . 4.1 [1], . - .

    SMALLINT INTEGER. , SMALLINT INTEGER 2 , 4 , INTEGER. - , INTEGER.

    : , , .. INTEGER , .

    ( ) FLOAT DOUBLE PRECISION. FLOAT - . - FLOAT , .

    (, ), DOUBLE PRECISION.

  • 24 1.

    , 3- InterBase 64 . .

    NUMERIC DECIMAL. , NUMERIC DECIMAL. - 1 18 , .

    , : , .

    , , , , ! , isql .

    :

    SQL> CREATE TABLE test (

    CON> Num_field NUMERIC(15,2),

    CON> Dec_field DECIMAL(15,2));

    :

    SQL> show tables test;

    :

    NUM_FIELD NUMERIC(15, 2) Nullable

    DEC_FIELD NUMERIC(15, 2) Nullable

    , InterBase , NUMERIC!

    - . , InterBase 3 , , , .

    [1], , - (. 1.1). , 3- :

    1.1.

    1 3

    1 4 SMALLINT NUMERIC

    INTEGER DECIMAL

    SMALLINT

    5 9 INTEGER INTEGER

    10 18 DOUBLE PRECISION INT64

    , , NUMERIC DECIMAL: ()

  • 25

    ( ) 2 SMALLINT, 4 INTEGER.

    , , , DECIMAL NUMERIC !

    1- 3- . 1- - , ! 3- - INT64, 64- +/ 2^32. , - 3- , INT64 - .

    InterBase 6.x 4. 5.. - , 6- InterBase, , , , InterBase

    , InterBase 6.x 3 DATE, TIME TIMESTAMP.

    DATE . 1 100 . . 29 32768 .

    TIME . 00:00 AM 23:59.9999 PM.

    TIMESTAMP DATE TIME.

    ? - , . - . , InterBase -/ ( FIBPlus), , InterBase.

    , ? EXTRACT ( InterBase 6.), . - :

    EXTRACT (MONTH FROM DATE_FIELD)

    EXTRACT (YEAR FROM DATE_FIELD)

  • 26 1.

    EXTRACT : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, WEEKDAY, YEARDAY. - , .

    InterBase , CHAR VARCHAR. , CHARACTER CHARACTER VARYING, - Show tables isql - .

    , , - , - 1 .

    CREATE TABLE testCHARLen(

    Field1 CHAR(255),

    Field2 CHAR);

    Field1 255 -, Field2 1 .

    CHAR VARCHAR 32768 , . -, InterBase -. - :

    SQL> create table testCHAR ( c1 char(10), c2 varchar(10));

    SQL> insert into testCHAR(c1,c2) values('Test','Test');

    SQL> SELECT '('||c1||')', '('||c2||')' from testCHAR;

    :

    (Test ) (Test)

    , 'Test', c1, . , CHAR - . , , - ( ).

    - VARCHAR.

    CHARACTER SET. - , - .

    , - ( CREATE TABLE ALTER TABLE) . - WIN1251 ( - InterBase . " InterBase" (. 1)). , - WIN1251:

  • 27

    CREATE TABLE TestCHARSET(

    Field1 VARCHAR(255),

    Field2 VARCHAR(255) CHARACTER SET win1251);

    Field1 , , . Field2 , - WIN1251.

    , (COLLATION ORDER), , . - WIN1251 PXW_CYRL. - COLLATION ORDER " InterBase".

    COLLATION ORDER [1, . 13].

    ! InterBase 6 , 4: NCHAR NCHAR VARYING, , CHAR VARCHAR, ISO8859_1. NCHAR CHAR DEFAULT CHARACTER SET ISO8859_1. NCHAR VARYING, CHAR VARCHAR. , - , ISO8859_1.

    BLOB

    BLOB . BLOB , , , , -, . .

    BLOB , - , - :

    CREATE TABLE testBLOB(

    myBlobField BLOB);

    myBlobField, - . BLOB - , - . -BLOB- (. " InterBase" (. 4)) , BLOB BLOB, BLOB - . .

    BLOB , (BLOB filters),

  • 28 1.

    . BLOB, InterBase. , subtype 0 , subtype 1 , subtype 2 BLR (Binary Language Representation, . "- InterBase") . . BLOB, . , .

    , BLOB- - . - BLOB, - .

    InterBase , . - - . .

    , - . InterBase .

    INTEGER, - - :

    CREATE TABLE test(

    myOneDimArray INTEGER[12],

    myTwoDimArray INTEGER[5,4],

    myThreeDimArray INTEGER[2,10,8]);

    3 : myOneDimArray, 12 , myTwoDimArray, () 54 Integer, myThreeDimArray 2108. , , . . 1, 2 . . - , 0 5, :

    myArray INTEGER[0:5]

    BLOB, -, "" - : InterBase , - .

    ? - . 80 % - (detail) -, InterBase. , Delphi C++Builder , , BDE IBX, -

  • 29

    . InterBase gpre, Delphi/C++Builder. , FIBPlus - InterBase, - " FIBPlus". IBProvider, InterBase Microsoft, - (. " InterBase Microsoft OLE DB" (. 3)).

    , , -, , - . , - , InterBase.

  • .

    InterBase . , InterBase . , - SQL, , Microsoft Excel. - InterBase , . , . , - .

    , , , . - "" . "" , " " " " . , .

    [14], InterBase. DDL (DDL Data Definition Language, . ), :

    CREATE TABLE table [EXTERNAL [FILE] ""]

    ( [, | ...]);

    table , (- - ) . table [EXTERNAL [FILE] ] , -, , .

    , , . , . DDL:

    = col { datatype | COMPUTED [BY] (< expr>) | domain}

    [DEFAULT { literal | NULL | USER}]

    [NOT NULL] [ ]

    [COLLATE collation]

    , . , , , datatype, - ( ), (. ), domain. " ", , SQL- - .

  • . 31

    FIRSTBASE.gdb, - " ", . , - InterBase , " InterBase", isql.exe InterBase.

    , TABLE_EXAMPLE 3 :

    CREATE TABLE Table_example ( ID INTEGER,

    NAME VARCHAR(80),

    PRICE_1 DOUBLE PRECISION);

    - .

    . , - , . , - . , D_ID . , :

    CREATE DOMAIN D_ID AS INTEGER; CREATE TABLE able_example (

    ID D_ID, NAME VARCHAR(80),

    PRICE_1 DOUBLE PRECISION);

    ID , D_ID. -, , , , , .

    - (COMPUTED BY) , . , , 10 % PRICE_1. - :

    CREATE TABLE able_example (

    ID INTEGER,

    NAME VARCHAR(80),

    PRICE_1 DOUBLE PRECISION,

    PRICE_10 COMPUTED BY (PRICE_1*0.1));

    , , PRICE_1, PRICE_10 . , . PRICE_10, SELECT . - ,

  • 32 1.

    , -, .

    , 3 . , .

    [DEFAULT {literal | NULL | USER}] . . 3 -. literal , . , -:

    NAME VARCHAR(80) DEFAULT ' '

    -, . . NAME, ' '.

    DEFAULT NULL . - NULL, , , . :

    PRICE_1 DOUBLE PRECISION DEFAULT NULL

    DEFAULT USER . - , . . , InterBase ( - . " InterBase: , " (. 4)).

    , - . , , . , - , - :

    NAME VARCHAR(80) NOT NULL

    , (NULL) . NOT NULL DEFAULT, - - .

    NOT NULL . , - , ( , - - ). , :

    PRICE_1 DOUBLE PRECISION CHECK (PRICE_1>0)

    PRICE_1 - . ,

  • . 33

    , -:

    PRICE_1 DOUBLE PRECISION NOT NULL CHECK (PRICE_1>0)

    , NULL .

    , . - " ".

    , -.

    , -. , . - , :

    DROP TABLE Table_example;

    CREATE TABLE Table_example(ID NUMERIC(15,2);

    . - DROP , , , , . . ALTER TABLE, - , , / - .

    , , - :

    ALTER TABLE Table_example ADD Patronimic VARCHAR(80);

    Table_example Patronimic VARCHAR(80). - NAME,

    ALTER TABLE Table_example DROP Name;

    ALTER TABLE [1]. , .

    , , ? , , HUMAN_NAME, NAME. ALTER TABLE ALTER COLUMN, .

    , InterBase 6.x . InterBase , -, . 6- InterBase - , :

  • 34 1.

    ALTER TABLE Table_example

    ALTER COLUMN NAME TO HUMAN_NAME;

    , , , , - ALTER DOMAIN (. " ").

    , InterBase. . InterBase, -, . , , - . - .

    , , . . , , - . - . , , - InterBase.

    - .

    , ? , - . , . -, . ? , 1, 2, 3 , , . .

    ( PK Primary key). . - , . -, , ID. :

    CREATE TABLE Table_example (

    ID INTEGER NOT NULL,

    NAME VARCHAR(80),

    PRICE_1 DOUBLE PRECISION,

    CONSTRAINT pkTable PRIMARY KEY (ID));

    , , table_example. , -? -, ID NOT NULL. - . NULL, , . -

  • . 35

    , , , NOT NULL.

    , CONSTRAINT (). "- " . 1, :

    CONSTRAINT pkTable PRIMARY KEY (ID)

    pkTable , ID , .

    (, , CASE-). , / , ? - ALTER TABLE. :

    ALTER TABLE TABLE_EXAMPLE ADD CONSTRAINT FF PRIMARY KEY (ID);

    Table_example , , . , :

    ALTER TABLE Table_example DROP CONSTRAINT pkTable;

    pkTable .

    . , . , - , InterBase , - . InterBase InterBase, . ( ), .

    , . . , ID NAME, - , . ID NAME 1 "", 2 "" , ID.

    , . , . ?

  • 36 1.

    . , , , . , - , - . , - . , - ( , . .)? , , . . , . : ( ) - .

    . - , . . , - , .

    , . - , , Paradox MS SQL, (auto increment). -. InterBase , . , , : .

    ? -, . , . . DDL:

    CREATE GENERATOR g1;

    SET GENERATOR g1 TO 2445;

    g1, 2445. - , . , InterBase GEN_ID. - , , - , , - . GEN_ID :

    Current_value = GEN_ID (g1, 1)

    , - :

  • . 37

    SELECT GEN_ID(g1, 1)FROM RDB$ DATABASE

    RDB$ Database , g1.

    current_value ( InterBase . ), g1 , 1 . - current_value g1 1, . . !

    , ! -, :

    Current_value = GEN_ID (g1, -23)

    g1 23. , , .

    , , : " , "" ? ?" , -. "" -, . "" : - , " ". , - ". " (. 1), " InterBase" (. 4).

    , - . ? - ?

    . , " FIBPlus", "" (. 1). , .

    -. , , - GEN_ID(,1) . , .

    - , . - , - - // .

  • 38 1.

    GEN_ID, .

    , , . , ! , - , . , , .

    , , InterBase, . , InterBase, -, . - .

  • , , - . - , .

    ? . , , - ( . " InterBase") (. 4). , " " " ". , ( ), , , , .

    , , , -.

    , - : , , .

    ?

    , , ( ).

    , . .

    ? ( ). - , -. (, - ) , -, , . , - , .

    , - . ( - ), . !

    (NATURAL). , , -, - .

  • 40 1.

    , . - , -.

    InterBase, , - , . . , - . , , , - "". , , , - , , -, .

    : - - , . . , , ( -). - - -. - 64 !

    , - , " " " ". - .

    , , , - , . :

    1. . , - SQL-.

    2. ; - ( ". ") -, , - . , , . - (. ).

    3. . Foreign key ( " ") - ,

  • 41

    . - , , - , .

    . - , .

    , - . , . , , . , ? , - , . , - , - . , , ! .

    -. , , / - . , , "", : -. , - . "-" , , , - / ! , , ! , , , !

    , . , -. 20 %. , - 20 % , - ! , , , , 20 % - , . . - InterBase.

    , . InterBase -

  • 42 1.

    SQL-, , , , . , . . - , - . ( WHERE, ORDER BY . .), , , . , - , , - . - . , , InterBase Firebird .

    , , , , - "" ""; .

    , . , , - . 3 , :

    1. .

    2. (JOIN) .

    3. ORDER BY.

    , - .

    . - DDL, :

    CREATE [UNIQUE] [ASC[ENDING] | DESC[ENDING]]

    INDEX index ON table (col [, col ...]);

    , , :

    CREATE INDEX my_index ON Table_example(ID)

    my_index Table_example, ID. - , . . , , . . , ID . , , -.

    , , - . , - . , , , , , , , . , 3 ,

  • 43

    , . - , , , - .

    , - WHERE OR , - , , - OR.

    : , (ASC[ENDING]), (DESC[ENDING]). ? , ! , (ASC), ( ) ! , .

    UNIQUE. , . (UNIQUIE KEY). - . -, U . . (Primary key) . - -, , RDB$PRIMARYNNN, NNN . , . , , . . , , , NULL. - NOT NULL. - , , - . , - .

    , . - - , , . , . . , - , -. RDB$FOREIGNNN, NNN .

    - ? , InterBase

  • 44 1.

    , , . . , , , , , , - .

    , , , , , ! ( ) - .

    ? " "? , . (, ) - , . , . "" ( ), . ( ) . , . - :

    1. ALTER INDEX.

    2. DROP INDEX CREATE INDEX.

    3. - gbak.

    . , , - , . , "" , .

    . ALTER INDEX :

    ALTER INDEX name {ACTIVE | INACTIVE};

    name , ACTIVE INACTIVE , ALTER INDEX. ACTIVE , . INACTIVE () - . - :

    ALTER INDEX name INACTIVE; ALTER INDEX name ACTIVE;

  • 45

    . ALTER INDEX : , -, ; , - - ; - (SYSDBA) .

    DROP INDEX CREATE INDEX , . DROP INDEX :

    DROP INDEX _;

    CREATE INDEX, .

    -, ALTER INDEX.

    InterBase, gbak. , , , , . . . " " (. 4).

    - SET STATISTICS. - 0 1, - () . InterBase . (, ), .

    :

    SET STATISTICS INDEX name;

    name , . -

    , , , , ( SYSDBA). - - .

    -. ALTER INDEX DROP/CREATE INDEX - , , - , . - , ALTER TABLE CREATE TABLE, .

  • InterBase. , , . .

    , , - , . . , , .

    , , . - .

    , . - , InterBase .

    , . - InterBase .

    InterBase:

    PRIMARY KEY;

    UNIQUE KEY;

    FOREIGN KEY

    ON UPDATE ON DELETE;

    CHECK.

    , , - , .

    . - .

    = [CONSTRAINT constraint]

    [ ...]

    = {UNIQUE | PRIMARY KEY

    | CHECK ( )

  • 47

    | REFERENCES other_table [( other_col [, other_col ])]

    [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    }

    :

    = [CONSTRAINT constraint]

    [< tconstraint> ...]

    = {{PRIMARY KEY | UNIQUE} ( col [, col ])

    | FOREIGN KEY ( col [, col ]) REFERENCES other_table [( oth-er_col [, other_col ])] [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    | CHECK ( )}

    - , - . - .

    , : - , - . - .

    .

    . , .

    :

    CREATE TABLE test1(

    ID_PK INTEGER CONSTRAINT pktest NOT NULL PRIMARY KEY);

    pktest ID_PK. .

    :

    CREATE TABLE test2(

    ID_PK INTEGER NOT NULL,

    CONSTRAINT pktst PRIMARY KEY (ID_PK));

  • 48 1.

    . [CONSTRAINT constraint]. -, , , .

    , .

    , InterBase . , , .

    , . , .

    . . , . , ( ) , -. (, , -, )?

    "" , () . - . - , . .

    - . , , . , (. ).

    , "" .

    - :

    = [CONSTRAINT constraint] {PRIMARY KEY |

    UNIQUE}

    :

    CREATE TABLE pkuk(

    pk NUMERIC(15,0) NOT NULL PRIMARY KEY, /* */

  • 49

    uk1 VARCHAR(50) NOT NULL UNIQUE,/* */

    uk2 INTEGER NOT NULL UNIQUE /* */);

    :

    = [CONSTRAINT constraint] {PRIMARY KEY |

    UNIQUE} ( col [, col ])

    . :

    CREATE TABLE pkuk2(

    Number1 INTEGER NOT NULL,

    Name1 VARCHAR(50) NOT NULL,

    Kol INTEGER NOT NULL,

    Stoim NUMERIC(15,4) NOT NULL,

    CONSTRAINT pkt PRIMARY KEY (Number1, Name1), /* pkt

    */

    CONSTRAINT ukt1 UNIQUE (kol, Stoim)); /* ukt1 */

    , , - , NOT NULL, - .

    - . DDL: ALTER TABLE. - :

    ALTER TABLE tablename

    ADD [CONSTRAINT constraint] {PRIMARY KEY | UNIQUE} ( col [, col ])

    - ALTER TABLE. :

    CREATE TABLE pkalter(

    ID1 INTEGER NOT NULL,

    ID2 INTEGER NOT NULL,

    UID VARCHAR(24));

    . :

    ALTER TABLE pkalter

    ADD CONSTRAINT pkal1 PRIMARY KEY (id1, id2);

    :

    ALTER TABLE pkalter

    ADD CONSTRAINT ukal UNIQUE (uid);

    , ( ) - SYSDBA ( - SYSDBA . " InterBase: , ") (. 4).

  • 50 1.

    , InterBase, . , , - !

    : , , . "", - (, . .) - ( , . .).

    , . - -.

    - . , , , -, .

    .

    - , .

    TITLE INVENTORY , .

    CREATE TABLE TITLE(

    ID_TITLE INTEGER NOT NULL Primary Key,

    DateNakl DATE,

    NumNakl INTEGER,

    NoteNakl VARCHAR(255));

    , ID_TITLE. TITLE , , .

    , :

    CREATE TABLE INVENTORY(

    ID_INVENTORY INTEGER NOT NULL PRIMARY KEY,

    FK_TITLE INTEGER NOT NULL, ProductName VARCHAR (255),

    Kolvo DOUBLE PRECISION,

    Positio INTEGER);

    , INVENTORY. -, ID_INVENTORY . - FK_TITLE,

  • 51

    ID_TITLE . ProductName, Kolvo Positio, , .

    FK_TITLE. , - , mas_ID_TITLE - :

    SELECT *

    FROM INVENTORY I1

    WHERE I1.FK_TITLE=?mas_ID_TITLE

    , INVENTORY , TITLE. , "".

    . -, . - , , , , .

    , INVENTORY , . , , , , .

    . FK_TITLE ID_TITLE TITLE. :

    ALTER TABLE INVENTORY

    ADD CONSTRAINT fktitle1 FOREIGN KEY(FK_TITLE) REFERENCES TI-

    TLE(ID_TITLE)

    object is in use ( -). , , - . - object is in use.

    INVENTORY , ; fktitle1 ; FK_TITLE , ; TITLE , ( ) ; ID_TITLE TITLE .

    ( ) :

    = [CONSTRAINT constraint] FOREIGN KEY ( col [,

    col ]) REFERENCES other_table [( other_col [, other_col ])] [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

  • 52 1.

    , . , - , .

    -, (col [, col ]), -; other_table, [( other_col [, other_col ]) .

    :

    CREATE TABLE Inventory2(

    FK_TABLE INTEGER NOT NULL CONSTRAINT fkinv REFERENCES

    TITLE(ID_TITLE)

    );

    , FOREIGN KEY, , FK_TITLE.

    :

    CREATE TABLE Inventory2(

    FK_TABLE INTEGER NOT NULL,

    CONSTRAINT fkinv FOREIGN KEY (FK_TABLE) REFERENCES

    TITLE(ID_TITLE)

    );

    NULL

    , , - NULL-. . , , . (. . NULL) , : , , .

    NULL - , - - "" (. . NULL).

    , , - . InterBase - / . - :

  • 53

    [ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    [ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]

    .

    , , -- - . :

    ALTER TABLE INVENTORY

    ADD CONSTRAINT fkautodel

    FOREIGN KEY (FK_TITLE) REFERENCES TITLE(ID_TITLE)

    ON DELETE CASCADE

    , - . . 1.2 ( , NO ACTION|CASCADE|SET DEFAULT|SET NULL ON XXX).

    1.2

    NO ACTION CASCADE SET DEFAULT SET NULL

    ON DELETE

    - - -

    -

    - - -

    - - NULL

    ON UPDATE

    - -

    - -

    - - -

    - - NULL

    NO ACTION, ( ) , - .

    CASCADE: - .

  • 54 1.

    CHECK

    - . - - , , .

    :

    = [CONSTRAINT constraint] CHECK (

    )}

    constraint ; , / -. , / , .

    :

    create table checktst(

    ID integer CHECK(ID>0));

    , / - ID, / (. " InterBase" (. 1)).

    . :

    = {

    { | ()}

    | [NOT] BETWEEN AND

    | [NOT] LIKE [ESCAPE ]

    | [NOT] IN ( [ , ...] | )

    | IS [NOT] NULL

    | {[NOT] {= | < | >} | >= |

  • 55

    , - CHECK, .

    , CHECK , , .

    -. , ALTER TABLE :

    ALTER TABLE tablename

    DROP CONSTRAINT constraintname

    constraintname , . - - , , , - InterBase, , InterBase .

    , SYSDBA.

  • , SQL, , - .

    (VIEW) , . , - , .

    . , - . , , . , , , , ( , ), .

    -, . "" , - , . (, , ) , ( ).

    InterBase. / , ( ) , ! InterBase . " InterBase: -, " (. 4).

    DDL

    , DDL (Data Definition Language SQL, . ), .

    InterBase, - :

    CREATE VIEW viewname [(view_column [, view_column])] AS [WITH CHECK OPTION];

    viewname , , - , : [(view_column [, view_column])]. - , , . WITH CHECK OPTION " ".

  • 57

    - , , . . . - , . - - ( , "-", IBAlterView, . " - InterBase"). , DDL:

    DROP VIEW viewname;

    :

    CREATE VIEW MyView AS

    SELECT NAME, PRICE_1

    FROM Table_example;

    Table_example, ". ". NAME PRICE_1, Table_example , . . MyView Table_example.

    . - -. , .

    -, , -- ( - master-detail). DDL- :

    /* Table: WISEMEN */

    CREATE TABLE WISEMEN (

    ID_WISEMAN INTEGER NOT NULL,

    WISEMAN_NAME VARCHAR(80));

    /* Primary keys definition */

    ALTER TABLE WISEMEN ADD CONSTRAINT PK_WISEMEN PRIMARY KEY

    (ID_WISEMAN);

    /* Table: WISEBOOK */

    CREATE TABLE WISEBOOK (

    ID_BOOK INTEGER NOT NULL,

    ID_WISEMAN INTEGER,

    BOOK VARCHAR(80)); /* Primary keys definition */

    ALTER TABLE WISEBOOK ADD CONSTRAINT PK_WISEBOOK PRIMARY KEY

    (ID_BOOK);

    /* Foreign keys definition */

  • 58 1.

    ALTER TABLE WISEBOOK ADD CONSTRAINT FK_WISEBOOK FOREIGN KEY

    (ID_WISEMAN) REFERENCES WISEMEN (ID_WISEMAN);

    , WISEMEN WISEBOOK, master-detail - FOREIGN KEY. , - . - . , , , -:

    CREATE VIEW WiseBookCount

    (WISEMAN,

    HOW_WISEBOOKS) AS

    SELECT M.WISEMAN_NAME, COUNT(B.BOOK)

    FROM WISEMEN M, WISEBOOK B

    WHERE (M.ID_WISEMAN = B.ID_WISEMAN)

    GROUP BY M.WISEMAN_NAME

    , COUNT(), SUM(), MAX() . ., - , . . , . , , , . , , , , - , . .

    , ? , , ORDER BY. : - ORDER BY , ORDER BY, . , , :

    SELECT * FROM WiseBookCount ORDER BY HOW_WISEBOOKS

    SQL- . ORDER BY -

    , , (. " ").

    , , . , , "K". :

    CREATE VIEW WiseMen2

    (WISEMAN) AS SELECT M.WISEMAN_NAME

  • 59

    FROM WISEMEN M

    WHERE M.WISEMAN_NAME LIKE 'K%'

    , , - , - .

    , . . - . , !

    . , ( ), NULL. , -, , , UDF, - , DISTINCT HAVING. , , . . DELETE, INSERT UPDATE, -.

    , - .

    , , . , , "" (. 1), VIEW.

    - .

    3 : BEFORE DELETE, BEFORE UPDATE BEFORE INSERT. , , .

    - DELETE, INSERT UPDATE. InterBase , , -, . . BEFORE DELETE/INSERT/UPDATE. , InterBase - , ( - ), - ( ), .

    , .

    WITH CHECK OPTION. , , , "" .

  • 60 1.

    : , - , , VIEW, .

    , - .

    , , . . , , .

  • , InterBase -. (. stored procedures) - , - , - . - .

    -, , InterBase , - SQL-.

    SQL-, - , , , -, .

    InterBase? () , -

    InterBase -, , InterBase.

    , - . , (. . , , ) .

    , , , SQL, , INSERT, UPDATE SELECT, (IF, WHILE), - . , - - .

    , -, . - , , "" (. 1).

    . , . , -

  • 62 1.

    . - InterBase SQL-, , - isql, . SQL- BLR ( BLR . " InterBase" (. 4)) , isql - , SQL- . - . - , . . , , . , - - .

    , - . InterBase, " InterBas", - . - , GUI-, SQL-.

    :

    CREATE PROCEDURE name

    [( param datatype [, param datatype ])]

    [RETURNS ( param datatype [, param datatype ])]

    AS

    ;

    < procedure_body> = []

    < block>

    < variable_declaration_list> =

    DECLARE VARIABLE var datatype;

    [DECLARE VARIABLE var datatype; ]

    =

    BEGIN

    < compound_statement>

    [< compound_statement> ]

    END

    < compound_statement> = { | statement;}

    , . , .

    , , , :

    CREATE PROCEDURE SP_Add(first_arg DOUBLE PRECISION,

    second_arg DOUBLE PRECISION)

    RETURNS (Result DOUBLE PRECISION)

    AS

  • 63

    BEGIN

    Result=first_arg+second_arg; SUSPEND;

    END

    , : CREATE PROCEDURE ( - ) SP_Add, - first_arg second_arg .

    CREATE PROCEDURE , .

    InterBase. - , , .

    RETURNS, - Result.

    , RETURNS - .

    RETURNS() AS. AS , .

    - () ( , ), (;), , - BEGIN END. , SUSPEND. , , , .

    , (;). , SQL SQL, . , , , SQL , - ? . , , - , SQL- isql, , , -, . SQL-, - InterBase, ( ) -

  • 64 1.

    , , . isql, SQL, :

    SET TERM

    :

    SET TERM ^;

    CREATE PROCEDURE some_procedure

    ..

    END

    ^

    SET TERM ;^

    . , , - , . SQL- :

    SELECT *

    FROM Sp_add(181.35, 23.09)

    , Result, 181.35 23.09 . . 204.44.

    , SQL-, , . - - SUSPEND .

    , InterBase ( ) - : - (selectable procedures) (executable procedures). - , - , , , -, , Returns, . . . - - SELECT, EXECUTE PROCEDURE.

    - , SELECT- - EXECUTE PROCEDURE. , . , - . - SELECT, - EXECUTE PROCEDURE. , .

    , -, . SQL-

  • 65

    SELECT ID, NAME FROM Table_example. - , (ID NAME) - ( Table_example). SQL. , - . , , , -, , - . , - , ( ID NAME) . - .

    , , SQL , ! - , , . -: - SELECT, "" - , . EXECUTE PROCEDURE, "" , ( !) .

    -, . , , SELECT ID, NAME FROM Table_Example, . . - ID NAME . :

    CREATE PROCEDURE Simple_Select_SP RETURNS (

    procID INTEGER,

    procNAME VARCHAR(80))

    AS

    BEGIN

    FOR

    SELECT ID, NAME FROM table_example

    INTO :procID, :procNAME

    DO

    BEGIN

    SUSPEND;

    END

    END

    , Simple_Select_SP. , ID NAME. , , . - FOR SELECT:

    FOR

    SELECT ID, NAME FROM table_example

    INTO :procID, :procNAME

    DO BEGIN

    /*- procID procName*/ END

  • 66 1.

    : , Table_example, procID procName, - .

    : "? ?" , - . , .

    , AS - BEGIN. :

    DECLARE VARIABLE ;

    , MyInt, AS BEGIN :

    DECLARE VARIABLE MyInt INTEGER;

    . , SQL- FOR SELECT, - , SELECT, . , !

    SQL-. -, :

    procName='Some name';

    . FOR SELECT - , . - : ID => procID, NAME => procName. DO , - , SUSPEND.

    , FOR SELECT DO , SELECT . , DO, - SUSPEND.

    , - , , - -. - SUSPEND, .

    FOR SELECT... DO, - , WHILE...DO, - . , WHILEDO. 0 99:

  • 67

    CREATE PROCEDURE QUAD

    RETURNS (QUADRAT INTEGER)

    AS

    DECLARE VARIABLE I INTEGER;

    BEGIN

    I=1;

    WHILE (i

  • 68 1.

    , - . - :

    DECLARE VARIABLE avg_price DOUBLE PRECISION;

    . BEGIN.

    - . :

    SELECT AVG(Price_1)

    FROM Table_Example

    INTO :avg_price;

    AVG, PRICE_1 - PRICE_1 Table_example. avg_price. , avg_price , , .

    , - . singleton-. . - , - FOR SELECT...DO, .

    , . , .

    Table_example:

    FOR

    SELECT ID, NAME, PRICE_1

    FROM Table_Example

    INTO :ID, :NAME, :new_price

    DO

    BEGIN

    /* */

    END

    Table_example - - ID, NAME new_price. , , , , , , : , - - , , ! - SUSPEND, - - new_price.

  • 69

    , BEGINEND - . , , , . - IF:

    IF (new_price > avg_price) THEN /*

    */ BEGIN

    /* , , */

    new_price = (avg_price + avg_price*(Percent2Increase/100));

    UPDATE Table_example

    SET PRICE_1 = :new_price

    WHERE ID = :ID;

    END

    ELSE

    BEGIN

    /* ,

    , , -

    */

    new_price = (new_price + ((avg_price - new_price)/2));

    UPDATE Table_example

    SET PRICE_1 = :new_price

    WHERE ID = :ID;

    END

    , IF, - , , /**/.

    , UPDATE, - . , , WHERE , , ID : ID=:ID. , ID .

    IF...THEN...ELSE ID, NAME new_price , , - . IF SUSPEND, , . - , , , , FOR SELECT...DO .

    , SUSPEND, - , EXIT, - . EXIT , , - .

    , SELECT - EXIT, . ,

  • 70 1.

    - , -

    SUSPEND;

    EXIT;

    EXIT singleton- , - EXECUTE PROCEDURE. , SQL, .

    , :

    CREATE PROCEDURE IncreasePrices ( Percent2Increase DOUBLE PRECISION)

    RETURNS (ID INTEGER, NAME VARCHAR(80), new_price DOUBLE PRECISION) AS

    DECLARE VARIABLE avg_price DOUBLE PRECISION;

    BEGIN

    SELECT AVG(Price_1)

    FROM Table_Example

    INTO :avg_price;

    FOR

    SELECT ID, NAME, PRICE_1

    FROM Table_Example

    INTO :ID, :NAME, :new_price

    DO

    BEGIN

    /* */

    IF (new_price > avg_price) THEN /*

    */

    BEGIN

    /* , , -

    */

    new_price = (avg_price + avg_price*(Percent2Increase/100));

    UPDATE Table_example

    SET PRICE_1 = :new_price

    WHERE ID = :ID;

    END

    ELSE

    BEGIN

    /* ,

    , ,

    */

    new_price = (new_price + ((avg_price - new_price)/2));

    UPDATE Table_example

    SET PRICE_1 = :new_price

    WHERE ID = :ID;

    END

    SUSPEND;

    END

    END

  • 71

    . - - .

    InterBase . , . 1000 , , , - .

    , . , , .

    , - , .

    : :

    -

    -

    -

    -

    -

    - - - -

    ..

    , . " ", . , " -", :

    -. :

    CREATE TABLE GoodsTree

    (ID_GOOD INTEGER NOT NULL,

    ID_PARENT_GOOD INTEGER,

    GOOD_NAME VARCHAR(80),

    constraint pkGood primary key (ID_GOOD));

  • 72 1.

    GoodsTree, 3 : ID_GOOD - , ID_PARENT_GOOD -- GOOD_NAME -. , - :

    ALTER TABLE GoodsTree

    ADD CONSTRAINT FK_goodstree

    FOREIGN KEY (ID_PARENT_GOOD)

    REFERENCES GOODSTREE(ID_GOOD)

    , - , - , .

    :

    ID_GOOD ID_PARENT_GOOD GOOD_NAME

    1 0 GOODS

    2 1

    3 1

    4 2

    5 2

    6 4

    7 4

    8 4

    9 5

    10 5

    11 10

    12 10

    , , , "" "" , "-" " - ".

    , , - . ; - --. , -, "".

    , . :

    CREATE PROCEDURE GETFULLNAME (ID_GOOD2SHOW INTEGER)

    RETURNS (FULL_GOODS_NAME VARCHAR(1000), ID_CHILD_GOOD INTEGER) AS

  • 73

    DECLARE VARIABLE CURR_CHILD_NAME VARCHAR(80);

    BEGIN /* FOR SELECT -

    ID_GOOD=ID_GOOD2SHOW */

    FOR SELECT gt1.id_good, gt1.good_name

    FROM GoodsTree gt1

    WHERE gt1.id_parent_good=:ID_good2show

    INTO:ID_CHILD_GOOD, :full_goods_name

    DO

    BEGIN

    /* EXISTS,

    TRUE, .

    ID_PARENT_GOOD = ID_CHILD_GOOD ,

    "" */

    IF (NOT EXISTS(

    SELECT * FROM GoodsTree

    WHERE GoodsTree.id_parent_good=:id_child_good))

    THEN

    BEGIN /* "" */

    SUSPEND;

    END

    ELSE /* , */

    BEGIN /* - */

    CURR_CHILD_NAME=full_goods_name;

    /* */

    FOR

    SELECT ID_CHILD_GOOD, full_goods_name

    FROM GETFULLNAME (:ID_CHILD_GOOD)

    INTO:ID_CHILD_GOOD, :full_goods_name

    DO BEGIN /* -

    || */

    full_goods_name=CURR_CHILD_NAME||' '||full_goods_name;

    SUSPEND; /* */ END END

    END

    END

    ID_GOOD2SHOW=1, :

    FULL_GOODS_NAME ID_CHILD_GOOD

    6

    7

    8

    9

    11

  • 74 1.

    FULL_GOODS_NAME ID_CHILD_GOOD

    12

    3

    , -"", .

    . , , , . - .

    , , " InterBase", , .

  • InterBase

    InterBase, - .

    () InterBase "".

    InterBase - , . InterBase , , . - :

    CREATE EXCEPTION ;

    , :

    CREATE EXCEPTION test_except 'Test exception';

    DROP EXCEPTION , ALTER EXCEPTION .

    , - :

    EXCEPTION ;

    , . -, .

    :

    CREATE EXCEPTION zero_divide 'Cannot divide by zero!';

    , :

    CREATE PROCEDURE SP_DIVIDE (

    DELIMOE DOUBLE PRECISION,

    DELITEL DOUBLE PRECISION)

    RETURNS (

    RESULT DOUBLE PRECISION)

    AS

    BEGIN

    if (Delitel

  • 76 1.

    BEGIN

    EXCEPTION zero_divide;

    Result=0;

    END

    ELSE

    BEGIN

    Result=Delimoe/Delitel;

    END

    SUSPEND;

    END

    , Delitel Delimoe, Delitel 0.0000001, . . , ( - - ). Delitel , zero_divide. -? , SP_divide isql, :

    SQL> select * from sp_divide(300,0);

    RESULT

    =======================

    Statement failed, SQLCODE = -836

    exception 1

    -Cannot divide by zero!

    - -, :

    . 1.4.

    , InterBase. InterBase , - , BEGINEND, -, - SUSPEND.

    , - , - , SUSPEND, - , SUSPEND.

  • InterBase 77

    , , - . , :

    WHEN EXCEPTION DO

    BEGIN

    /* */

    END

    - - .

    , : - ( ) , InterBase - WHEN EXCEPTIONDO BEGIN...END. , ( , BEGINEND ) . ., , . , , -. , BEGIN...END , END .

    , SP_DIVIDE. , - SP_divide_all, SP_DIVIDE , . , , .

    , :

    CREATE PROCEDURE sp_test_except(Delitel DOUBLE PRECISION)

    RETURNS (rslt DOUBLE PRECISION, status VARCHAR(50))

    AS

    BEGIN

    Status='Everything is Ok';

    SELECT result FROM sp_divide(12,:Delitel) INTO :rslt;

    SUSPEND;

    WHEN EXCEPTION Zero_divide DO

    BEGIN

    Status='zero value found!';

    rslt=-1;

    SUSPEND;

    END

    END

    SP_DIVIDE. Delitel - , SP_DIVIDE rslt , status - 'Everything is Ok'. , - , rslt 1, status 'zero value found!'. , -

  • 78 1.

    , . .

    SQL InterBase

    , , InterBase. -, InterBase. -, : - , -, ( ) , , .

    , , .

    , , , , EXCEPTION GDSCODE, SQLCODE:

    WHEN GDSCODE|SQLCODE DO

    BEGIN

    /* */

    END

    , GDSCODE SQLCODE, . SQLCODE, SQL, GDSCODE InterBase. - SQL SQLCODE=-802 "Arithmetic exception, numeric overflow, or string truncation" SQLCODE=-817 "Attempted update dur-ing read-only transaction". SQL SQLCODE "SQLCODE codes and messages" [2, . 6].

    InterBase isc_bad_dbkey 335544322L "invalid database key". [2, . 6].

    , "" - . - , .

    , ? ? , . - , SQL, InterBase , WHEN DO ANY:

    WHEN ANY DO

    BEGIN

    /*

    */

    END

    , - .

  • InterBase 79

    , " ", - - . "" SQL- . InterBase . - " array- FIBPlus" (. 2) " InterBase Microsoft OLE DB" (. 3). .

    . . , , :

    CREATE TABLE table_array(

    ID_table INTEGER,

    Array1 INTEGER[3,2]);

    , .

    SELECT Array1[:i, :j] FROM table_array INTO :ElemValue;

    :

    CREATE PROCEDURE SelectFromArr(ID_row INTEGER,

    x INTEGER, y INTEGER, vl integer)

    Returns (ElemValue INTEGER)

    AS

    BEGIN

    SELECT array1[:x,:y]

    FROM table_array

    WHERE id_table=:ID_row

    INTO :ElemValue;

    SUSPEND;

    END

    , - x y table_array - ID_table=ID_row. , - -. , - InterBase API, , InterBase FIBPlus Delphi/C++Builder/Kylix IBProvider Microsoft.

    - ( ) InterBase. - , , .

  • . "" , , .

    ? InterBase , -

    , (view). "" .

    , , , - , , , .

    , SQL , - INSERT, DELETE UPDATE. , - - , , . , - , , . - , CHECK (. " "), - ; - - - .

    , - , , .

    InterBase, INSERT/DELETE/UPDATE. , - ( , -). , NEW OLD. , ( - ).

    , "" , , -, , " " .

    - "" . - . , - 3 SQL-, , INSERT/DELETE/UPDATE. . - , . . -, "" .

    Yaffil 1.0 , - .

  • 81

    "" "" . - , 6 SQL-.

    , . ". - " :

    CREATE TABLE Table_example (

    ID INTEGER NOT NULL,

    NAME VARCHAR(80),

    PRICE_1 DOUBLE PRECISION,

    CONSTRAINT pkTable PRIMARY KEY (ID));

    ID . , , . , ID , . , :

    CREATE GENERATOR GEN_TABLE_EXAMPLE_ID;

    :

    SET GENERATOR GEN_TABLE_EXAMPLE_ID TO 1;

    . , , - , , - . , " InterBase", isql, - SET TERM, " ". - .

    , :

    CREATE TRIGGER Table_example_bi FOR Table_example

    ACTIVE BEFORE INSERT POSITION 0

    AS

    BEGIN

    IF (NEW.ID IS NULL) THEN

    NEW.ID = GEN_ID(GEN_TABLE_EXAMPLE_ID,1);

    END

    , (, , ), -. "" .

    CREATE TRIGGER, Table_example_bi. -

  • 82 1.

    FOR, , , Table_example.

    - ACTIVE , "". INACTIVE. , - , . BEFORE INSERT , ; - POSITION 0 () . , InterBase 32000 (, BEFORE INSERT AFTER UPDATE), -, . - . , .

    AS . AS . - . - IFTHEN , . , TRUE () FALSE (), :

    NEW.ID IS NULL

    ", NEW?" . , - , . , .

    , , - , . -"" BEFORE INSERT , (INSERT) . (BEFORE) , . , - , . . , - / - . - NEW. - (- struct record Pascal), , - (INSERT ). , - : New.ID, New.NAME New.PRICE_1.

    , . :

    IF (NEW.ID IS NULL) THEN

    NEW.ID = GEN_ID(GEN_TABLE_EXAMPLE_ID,1);

  • 83

    IF...THEN ID -- , . - NEW.ID NULL, GEN_ID, - GEN_TABLE_EXAMPLE_ID , NEW.ID. -, " " !

    NEW, OLD. NEW, OLD , . , - OLD , :

    CREATE TRIGGER Table_example_ad0 FOR Table_example

    ACTIVE AFTER DELETE POSITION 0

    AS

    BEGIN IF (OLD.id>1000) THEN

    BEGIN

    /*..do something..*/

    OLD.ID=10;

    END

    END

    , (AFTER DELETE). , . , OLD.ID=10; - . -, , , - , .

    -. , NEW OLD -, . - , . - OLD ? ! -, OLD - BEFORE/AFTER INSERT. NEW BEFORE/AFTER DELETE. BEFORE/AFTER UPDATE, - , NEW (, - , OLD?), BEFORE INSERT/UPDATE.

    , ? , 1.3. , -. .

    - "" "", -. 6 . ,

  • 84 1.

    NEW Y, , - . N/A, .

    1.3. NEW OLD

    NEW OLD

    BEFORE INSERT Y Y N/A N/A

    AFTER INSERT Y N/A N/A N/A

    BEFORE UPDATE Y Y Y N/A

    AFTER UPDATE Y N/A Y N/A

    BEFORE DELETE N/A N/A Y N/A

    AFTER DELETE N/A N/A Y N/A

    NEW OLD . (OLD) (NEW) - . , / .

    , . . . ACTIVE . , . - , . , DDL:

    ALTER TRIGGER INACTIVE;

    , Data Definition Language, . -, - . , , InterBase . INACTIVE, :

    UPDATE rdb$triggers trg SET trg.rdb$trigger_inactive=1

    WHERE trg.rdb$trigger_name='TABLE_EXAMPLE_AD0'

    DDL, .

  • 85

    , , , SQL-. - , . . - - , . " " .

    , , - . - , " ", ( , -, "- " - !), , ! , .

    , -, ( ) , , . , , , NEW OLD.

    , , . , , , , -, SQL- INSERT/UPDATE/DELETE. , , - . , . - , InterBase.

    ( , ), . , " " . InterBase -? , , , , - . . , - "" ?

    , InterBase , -

  • 86 1.

    . INSERT/UPDATE/DELETE SELECT, EXECUTE PROCEDURE.

    . - , . . , . - , - , , - , , - - .

    , , InterBase , , , - . , -, . , InterBase - , , InterBase . .

    - ( ) WHEN...DO. , WHENDO . - " InterBase" (. 1).

    , . - , - , , .

    InterBase

    InterBase, , (events). , . InterBase, . , - - .

    , , " -". - , :

    POST_EVENT '_';

    , '_' , , , :

  • 87

    If () then

    BEGIN

    Event_text ='IT IS TRUE!';

    END

    ELSE

    BEGIN

    Event_text ='IT IS FALSE!';

    END

    FALSE_EVENT :Event_text;

    , , - , , " " .

    () - InterBase API, , , FIBPlus SuperIBAlerter.

    - , InterBase, - InterBase, . , , - .

    - .

    - . - - , , .

    InterBase - .

  • User Defined Functions

    , , , SQL InterBase - . , - InterBase . , InterBase - . , , , InterBase - , -, -. InterBase - , . , , .

    SQL InterBase , (user defined functions). (Dynamic Link Library) , . , Borland Delphi, Borland C++ Builder, Microsoft Visual C++ . . , DLL , InterBase , - DLL DECLARE EXTERNAL FUNCTION. - , InterBase.

    InterBase 6.0 , DLL , PATH. InterBase 6 ( Firebird Yaffil) , DLL UDF, InterBase.

    - , , . - Borland Delphi. EMPLOYEE.GDB.

    , . , COLLATE . , , , - . , , DLL Delphi.

  • User Defined Functions 89

    library TestUDF; uses SysUtils; function malloc(Size: Integer): Pointer; cdecl; external

    'msvcrt.dll'; function StrUpperCase(sz: PChar): PChar; cdecl; export; var Tmp: string; begin Tmp := AnsiUpperCase(sz); Result := malloc(length(Tmp) + 1); StrPCopy(Result, Tmp); end; exports StrUpperCase; begin end.

    : StrUpperCase. , , - Pchar, . . , #0. : sz , AnsiUpperCase. , -. , malloc Windows. Tmp Result. TestUDF.dll . - InterBase 6.x , \Udf, - . -. DECLARE EXTERNAL FUNCTION, :

    DECLARE EXTERNAL FUNCTION name [datatype | CSTRING (int) [, datatype | CSTRING (int) ]] RETURNS {datatype [BY VALUE] | CSTRING (int)} [FREE_IT] ENTRY_POINT 'entryname' MODULE_NAME 'modulename';

    name . DLL.

    datatype . :

    ;

    ( ) ;

    .

    , CSTRING. . - , , .

    FREE_IT InterBase, , .

  • 90 1.

    , , - .

    entryname DLL, - .

    modulename DLL, .

    , entryname modulename . , , -

    :

    DECLARE EXTERNAL FUNCTION USTRUPPERCASE

    cstring(254)

    RETURNS cstring(254) FREE_IT

    ENTRY_POINT 'StrUpperCase' MODULE_NAME 'TestUDF.dll'

    USTRUPPERCASE SQL-. , , :

    SELECT USTRUPPERCASE(DEPARTMENT) FROM DEPARTMENT

    DEPARTMENT:

    . 1.5. UDF USTRUPPERCASE

    , SQL- User Defined Functions. , , - - . , InterBase NULL-. "" SQL .

    UDF-, www.InterBase-world.com www.ibase.ru.

  • InterBase

    Borland InterBase, Firebird , - , . InterBase , , , "" - .

    InterBase

    InterBase, , (character set), (. " " - ). , , .

    , - , . - DEFAULT CHARACTER SET. , WIN1251. UNICODE_FSS, UNICODE UTF-8. , WIN1251.

    -, :

    CREATE DATABASE 'C:\Database\rusbase.gdb' USER 'SYSDBA' PASWORD

    'masterkey' DEFAULT CHARACTER SET WIN1251;

    , - . , - . . , , - 3 :

    CREATE TABLE langTable(

    NAME_RUS VARCHAR(255) CHARACTER SET WIN1251,

    NAME_ENG VARCHAR(255) CHARACTER SET WIN1250,

    NAME_UNI VARCHAR(255) CHARACTER SET UNICODE_FSS);

    , , , - SQL- . ,

  • 92 1.

    (. ), - . , - , UNICODE_FSS, .

    , SQL- , , InterBase , "Cannot transliterate characters between character sets".

    , . , , character set NONE, InterBase, - , , . . , - , .

    , CHARACTER SET NONE , , , , . , CHARACTER SET, , , COLLATION ORDERS ( -) - .

    , -, . . . , "" - . , , . . COLLATION ORDER.

    - , InterBase . -, , . , - .

    InterBase, 32767 . -, 1, 2 3 . , CHAR VARCHAR, -

  • InterBase 93

    , , - . WIN1251 1 , - . - UNICODE_FSS 3 ; , - . UNICODE_FSS - 32767 div 3 = 10921 . - , InterBase - , . . , !

    (CHARACTER SET) - ( 2 3 ) (. . , - ).

    InterBase , - InterBase. - . -, , 1- 2- 3- .

    , , - . , UNICODE_FSS 2 . , , VARCHAR(255) CHARACTER SET UNICODE_FSS, , 255 * 3 div 2, . . 382.

    , (CHARACTER SET) - . - . , - WIN1251 , . . - .

    -? ( ) - COLLATION ORDERS. COLLATION ORDER -. . , - WIN1251 : WIN1251, , PWX_CYRL. PXW_CYRL , . . (case insensitive). : ....

    ? COLLATION ORDERS - , ( ) . (2 3, ). ,

  • 94 1.

    COLLATION ORDER WIN1251 1 - , PWX_CYRL 3 !

    - . , , , - . : , PXW_CYRL 3 , . InterBase . , 254 254 div 3 = 84 -. COLLATION ORDER , . , . COLLATE , , . - , InterBase .

    COLLATE , , :

    SELECT *

    FROM table1 ORDER BY SYMBOLIC_FIELD1 COLLATE PXW_CYRL

    UPPER:

    SELECT UPPER(field1 COLLATE PXW_CYRL) From table1

    : , , .

    InterBase

    InterBase , , - , , .

    : , . , .

    , , . FIBPlus IBX , , WIN1251, - lc_type=WIN1251.

  • InterBase 95

    , WIN1251, Borland Database Engine LANGDRIVER=PDOX ANSI Cyrr.

    JDBC charset=cp1251 ( . " InterBase Java" (. 3)).

    gdsintl.dll, %INTERBASE%\Intl. COLATION ORDERS InterBase . , www.InterBase-world.com.

  • .

    ?

    . . - , .

    .

    , .

    . : , . -, , (- ACID Atomicity, Consistency, Isolation, Durability).

    . , INSERT/UPDATE/DELETE , , SELECT. - , , .

    : " - ". , - . - .

    . - , . - -. -, , , . . - "" . - , . "" ( ).

    , - / , - - . - , .

    , , -, . InterBase, .

    :

  • . 97

    , .

    : " "! , - , -.

    , , .

    1. ( ). , - , , , - . , - ( !).

    2. " " , - - . , - ( ).

    3. , , , ( ). , , , , . - ( -) - , ( , ). , , , .

    , . ( , ). , , "", . , - .

    ("") (-) . .

  • 98 1.

    , -. , , . , . - "" -, , , - , : , , , , , "" - . , "" - - - . "", "".

    , - , -, .

    :

    , - .

    "": - .

    , , , -. , -, : , , , .

    , , -. - , . , -.

    . , , -

    -. , , -. , , . . , , . . .

  • . 99

    -/ -, . . , , , , .

    , - , ( ), , ( - ) - ( -). - .

    , - .

    , - :

    , . - , - , . , - , .

    , . . InterBase, - InterBase.

    InterBase

    , InterBase - . - InterBase, Multi Generation Architecture (MGA) - .

    InterBase, , InterBase. , " InterBase".

    , . -.

    InterBase

    InterBase , . - , , -

  • 100 1.

    (transaction log), .

    . , , ( ), - , . , .

    , - , .

    , . , - . , - , (, -, ) , -, . - , , .

    , , . - : InterBase () (- ) . , - - , .

    , ( 1), 2, . 1 ( 2) , 2 !

    , - - .

    , ! . - , , , . . " ".

    , . , , .

  • . 101

    , - InterBase, - InterBase.

    .

    InterBase transaction ID TID ( restore). , , , . . - , .

    (Transaction Inventory Page, TIP). InterBase , , TID# (. . active).

    4 : (active), - (Commited), (Rolled back) (limbo). .

    , Commit.

    , - Rollback.

    , - , - .

    TID# - , . TID# .

    TID# , . . Commited ( commit), . !

    , , TID#, , - . , , .

    - , . , - , , - TID.

  • 102 1.

    , , (. . - Rollbacked), (garbage) .

    , , ( Committed), - .

    " ?" . , - . , TID# .

    , , "". - . ""..

    , "". , . , , - , " ": , , TID (committed). - .

    , - . -, TIP, .

    , , , - .

    . , , - , , , - , , .

    , : , . (oldest interesting transaction)

    , . ( , ) " ",

    , - .

    (oldest active transaction, OAT) -, , .

  • . 103

    , "" .

    : -, - , , ; -, - , ! -, - .

    , , InterBase . www.InterBase-world.com www.ibase.ru - .

    , - , - . : - , - ? .

    , , - , . - , ( ) , , , .

    .

    , , , .

    , .

    InterBase 3 : READ COMMITTED, SNAPSHOT SNAPSHOT TABLE STABILITY. , - . - .

    READ COMMITTED. " ", (, ) . READ COMMITTED , - (. . ) . , - , -, .

    SNAPSHOT. "-" . , SNAPSHOT, . , ( , -

  • 104 1.

    ) , . SNAPSHOT , .

    SNAPSHOT TABLE STABILITY. "-" , , , . -, SNAPSHOT TABLE STABILITY - , . , SNAPSHOT TABLE STABILITY , .

    InterBase . InterBase.

    , InterBase, FIBPlus, IBProvider, IBX IBObjects (. " InterBase"), . .

    , , , -. InterBase API : isc_tpb_read, isc_tpb_write, isc_tpb_ read_committed . .

    isc_tpb_ - .

    .

    , - . 1.4:

    1.4.

    -

    Read

    write

    Wait . . " "

    nowait -

  • . 105

    read_committed rec_version

    . - rec_version - , -

    read_committed no_rec_version

    . - no_rec_version , -

    concurrency "" (, " " ), , -,

    consistency concurrency, . .

    , . - . .

    , - . (. . ) -, . . . -, , . : , . InterBase ( 6.5) Firebird. , - .

    - read write. , :

    read write

    , . - , , ,

  • 106 1.

    , , - .

    wait nowait. wait.

    , , , . , wait/nowait, - , . - , .

    1. , , - . , , , . :

    wait, - , (commit), Deadlock, (rollback), - (. . commit);

    nowait, 'lock conflict on no wait transaction'.

    2. : , - . . :

    wait, ; , 'Deadlock update conflict with concurrent update', , ; , ;

    nowait, 'lock conflict on no wait transaction'.

    , . - .

    , , , "deadlock", . " ", "-". , , - .

    ?

  • . 107

    , - . T1 T2 A B; , , . , - :

    1. T1 A, .

    2. T2 B, .

    3. T1 B, - . B - B, T1 .

    4. T2 A, - .

    : - , . - , InterBase . , .

    InterBase - , -. , - DEADLOCK_TIMEOUT InterBase ibconfig, .

    - , , , "deadlock" . .

    , .

    , , , , , -.

    " ", InterBase 3 . , DIRTY READ " ". - DIRTY READ -. InterBase -, .

  • 108 1.

    InterBase . Read Committed, read_committed. , , - , . "" - .

    1.4, -: read_committed rec_version read_committed no_rec_version. - rec_version. , - - .

    no_rec_version . , read_committed no_rec_version , - , , - .

    , . , ( , ):

    wait, , , - . -, .

    nowait, "Deadlock".

    , read_committed no_rec_version - , -.

    SNAPSHOT concurrency. -, SNAPSHOT "" InterBase, - . "" , , , , . , - , . . , - ( , ), .

    concurrency, - , , SNAPSHOT , () SNAPSHOT.

    SNAPSHOT (), , / .

    SNAPSHOT TABLE STABILITY consistency. SNAPSHOT, -

  • . 109

    . - consistency - , - c read_committed concurrency , (. . consistency) .

    , () . . - , -. wait nowait , .

    - . , - . "" , , , - . . ( ) -, .

    , - . (dbGrid Delphi/C++Builder), - - . lookup-, - . , ( ), - / / / .

    ? SELECT, , -

    " " READ COMMITED, "" , / ( , ). :

    read

    read_committed

    rec_version

    nowait

    - , .

    .

  • 110 1.

    / - concurrency. - : , - , , , , , ( , - tryexcept trycatch).

    :

    write

    concurrency nowait

    (nowait) , / ( ), , - ( "update conflict"). , , , .

    , , " " concurrency:

    read

    concurrency nowait

    , , , .

    , SELECT .

    , , - . , InterBase .

    , , . .

    , ". -", , . - -. - . . ,

  • . 111

    .

    , - . - (INSERT/SELECT). - , , .

    - . , InterBase - (, - , - InterBase).

    , - . , - .

    . - , , - Prepared. , Committed, Prepared. Rollback, Prepared .

    , -, - . , Prepared , , , -.

    , (, ).

    - , , . , - . , , . www.InterBase-world.com www.ibase.ru.

    http://www.interbase-world.com/

  • InterBase

    InterBase . " " , - InterBase .

    InterBase

    , , InterBase API. InterBase API . , "-" (wrapper) API. - API , - .

    , , , - . -, - , .

    . InterBase -: BDE (Borland Database Engine, . -), ODBC, OLE DB (ADO), dbExpress .

    BDE InterBase . BDE SQL-, InterBase. BDE Borland: Delphi, C++ Builder . BDE, SQL-, , . SQL-. BDE , Paradox, - - . , BDE InterBase, , , . InterBase BDE, Borland Delphi.

    ODBC (Open Database Connectivity) - , .

  • InterBase 113

    BDE, ODBC InterBase , - Borland. ODBC-, - InterBase 6.x . ODBC- Gemini .

    ODBC, Microsoft OLE DB. , , InterBase. , , IBProvider OLE DB- InterBase. Visual C++, Visual Basic, ASP IBProvider , OLE DB, InterBase. IBProvider InterBase MS SQL Server.

    dbExpress, - Borland (Delphi, C++Builder Kylix), , SQL-, . , , InterBase. - dbExpress, , .

    , - InterBase. - , "" InterBase API. -; InterBase, InterBase (. " InterBase " (. 4)).

    , , Devrace FIBPlus, - InterBase, 4.x, InterBase: Firebird Yaffil.

    , , . Java, CGI-. , - InterBase.

    Perl, Python PHP - InterBase, . 1.6, - InterBase.

  • 114 1.

    , , - - , Windows Linux .

    InterBase

    InterBase - , - InterBase/Firebird, - . , 1.6, :

    1.6

    Free IB Components

    (FIBC)

    , 1998 . - . , - FIBC, FIBPlus IBX

    ftp.ibphoenix.com

    /download

    FIBPlus -, , - Delphi 36, C++ Builder 36, Kylix. - data-aware-. Free IB Components

    www.fibplus.net

    IBObjects , - - -

    www.ibobjects.com

    InterBase Express

    (IBX)

    InterBase, data-aware- - . - FreeIBComponents - - Borland Delphi/C++ Builder Enterprise Edition

    codecentral.borland.com/

    codecentral/ccweb.exe/

    author?authorid=102

  • InterBase 115

    Zeos Database Objects

    , InterBase. data-aware- - , - -

    www.zeoslib.org

    SQLAPI++ ++, - SQL- , InterBase

    www.sqlapi.com

    Open Source Firebird and InterBase ODBC Driver

    ODBC- Inter-Base/Firebird. . - "" ODBC-JDBC

    www.ibphoenix.com

    /ibp_60_odbc.html

    Gemini InterBase ODBC Driver

    ODBC-, - InterBase, 4., - InterBase 6.5 Firebird 1.0

    www.ibdatabase.com

    IBProvider OLE DB- InterBase. - InterBase 6.x/Firebird 1.0

    www. Ibprovider.com

    SIBProvider OLE DB- InterBase

    www.sibprovider.com

    IBPerl - - Perl5 - InterBase

    www.karwin.com/ibperl

    DBD::InterBase DBI- InterBase dbi-InterBase.sourceforge.net

  • 116 1.

    PHPLib for InterBase

    InterBase PHP

    www.intelicom.si

    ADODB - InterBase PHP4 Data-base Wrapper

    InterBase PHP

    php.weblogs.com/adodb

    Zope Driver for InterBase

    InterBase Python

    www.zope.org/Members

    /mcdonc/RS/InterBaseStorage

    InterClient JDBC- - InterBase Java

    - Borland InterBase

    "" www.InterBase-world.com, www.ibase.ru

  • 2

    InterBase Borland Delphi/C++

    Builder/Kylix

    InterBase Express?

    Borland Delphi 57 Borland C++ Builder 56 Professional Enterprise InterBase -. InterBase Express IBX. - InterBase, InterBase API, . . , - (middle-ware) .

    IBX, GDS32.DLL - .

    IBX IPL InterBase Public License, . . - . - Borland, Delphi C++ Builder , Open Source-.

    IBX , InterBase. IBX :

    ;

    e InterBase 6.07.0;

    event-alerters;

    ;

    Services API;

    ;

    ;

    Delphi 57, C++ Builder 56 Kylix

    IBX FreeIBComponents, 1998 . , Borland, - SQLDialect 3, - , ( - ). Delphi C++ Builder

  • 118 2. Devrace FIBPlus

    IBX , - http://codecentral.borland.com.

    http://codecentral.borland.com/

  • ,

    IBX

    TIBDatabase . : Open, Close.

    TIBTransaction . - : StartTransaction, Commit, Rollback, CommitRetaining, Roll-backRetaining.

    TIBTable TTable. . TableName. : Open, Close. , - TIBTable, , . - .

    TIBQuery TQuery. SQL-. , TIBUpdateSQL, . SQL. : Open, Close, ExecSQL. .

    TIBDataSet , - TDataSet . : Prepare, Open, Close, Insert, Ap-pend, Edit, Delete, Refresh.

    TIBStoredProc - . - . - . StoredProcName. - ExecProc.

    TIBUpdateSQL TUpdateSQL. TIBQuery . : DeleteSQL, InsertSQL, ModifySQL RefreshSQL.

    TIBSQL SQL-. TIBQuery TIBDataSet, TIBSQL - .

    TIBDatabaseInfo - , . , UserNames , , PageSize - .

  • 120 2. Devrace FIBPlus

    TIBSQLMonitor -, , IBX.

    TIBEvents InterBase. Events. : RegisterEvents, UnregisterEvents.

    - Services API

    TIBConfigService .

    TIBBackupService (backup) .

    TIBRestoreService .

    TIBValidationService .

    TIBStatisticalService .

    TIBLogService - - .

    TIBSecurityService - .

    TIBLicensingService -, - InterBase.

    TIBServerProperties -, . .

    TIBInstall InterBase installation-.

    TIBUnInstall InterBase un-installation -.

  • InterBase eXpress (IBX)

    , - IBX. . , , ( , IBX FIBPlus) , IBX . , FIBPlus, -, . , - , FIBPlus.

    IBX

    Delphi ( C++ Builder), , - . , , IBX, , . . 2.1.

    TComponent

    TDataSet

    TIBCustomDataSet

    TIBDa