/******************************************************************************/ /*** Generated by IBExpert 04.02.2015 20:15:51 ***/ /******************************************************************************/ /******************************************************************************/ /*** Following SET SQL DIALECT is just for the Database Comparer ***/ /******************************************************************************/ SET SQL DIALECT 3; /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE GENERATOR GEN_TB_EXP_ID; CREATE TABLE TB_EXP ( ID_TB_EXP BIGINT NOT NULL, ID_TB_CAR_NEOF BIGINT, DATE_TIME TIMESTAMP, KOL_OSEY INTEGER, NZ INTEGER, P_CAR DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P_CAR_PG DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, SPEED_CAR DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PIC1 BLOB SUB_TYPE 0 SEGMENT SIZE 5000, NPLATF INTEGER, GOSNOMER_A VARCHAR(12), P1 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P2 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P3 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P4 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P5 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P6 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P7 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P8 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P9 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, L1 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L2 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L3 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L4 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L5 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L6 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L7 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L8 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG1 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG2 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG3 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG4 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG5 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG6 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG7 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG8 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG9 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG10 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG11 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG12 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG13 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG14 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG15 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, PG16 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, P10 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P11 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P12 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P13 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P14 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P15 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, P16 DMN_DEC15_3 /* DMN_DEC15_3 = DECIMAL(15,3) */, L9 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L10 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L11 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L12 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L13 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L14 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */, L15 DMN_DEC15_2 /* DMN_DEC15_2 = DECIMAL(15,2) */ ); /******************************************************************************/ /*** Primary Keys ***/ /******************************************************************************/ ALTER TABLE TB_EXP ADD CONSTRAINT PK_TB_EXP PRIMARY KEY (ID_TB_EXP); /******************************************************************************/ /*** Indices ***/ /******************************************************************************/ CREATE INDEX TB_EXP_IDX1 ON TB_EXP (DATE_TIME); CREATE DESCENDING INDEX TB_EXP_IDX2 ON TB_EXP (DATE_TIME); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: TB_EXP_AIU0 */ CREATE OR ALTER TRIGGER TB_EXP_AIU0 FOR TB_EXP ACTIVE AFTER INSERT OR UPDATE POSITION 0 AS begin --if (new.p_car>3.5) then post_event 'NEW_EXP'; end ^ /* Trigger: TB_EXP_BI */ CREATE OR ALTER TRIGGER TB_EXP_BI FOR TB_EXP ACTIVE BEFORE INSERT POSITION 0 as declare variable LOCAL_ID integer; declare variable K integer; begin if (new.id_tb_exp is null) then --если не назначили сами из программы (а такое частенько бывает) begin --111 LOCAL_ID = gen_id(gen_tb_exp_id, 1); select TB_NOM_KEY.NOM_KEY from TB_NOM_KEY into K;--получили тек множитель из ключа, а он уже сидит в спец таблице TB_NOM_KEY --if (LOCAL_ID < 0 or LOCAL_ID > 4294967295) then --exception E_GENERATOR_RANGE_ERROR;--есть предел 2 в 32 степени new.id_tb_exp = K * 4294967296 + LOCAL_ID;/*4 старших байта - пор ном ключа*диапазон, 4 младших - локальный ID записи*/ end --111 end ^ SET TERM ; ^ /******************************************************************************/ /*** Fields descriptions ***/ /******************************************************************************/ COMMENT ON COLUMN TB_EXP.ID_TB_CAR_NEOF IS 'ID в основной БД (не пока не используется)'; /******************************************************************************/ /*** Privileges ***/ /******************************************************************************/ /* Privileges of users */ GRANT SELECT ON TB_EXP TO OPERATOR; /* Privileges of triggers */ GRANT UPDATE, REFERENCES ON TB_EXP TO TRIGGER TB_EXP_AIU0; GRANT UPDATE, REFERENCES ON TB_EXP TO TRIGGER TB_EXP_BI; GRANT SELECT ON TB_NOM_KEY TO TRIGGER TB_EXP_BI;