Показать сообщение отдельно
  #8  
Старый 21.08.2011, 21:14
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

В общем, получается что-то вроде этого
Код:
/*****************************************************
    База данных программы Nikonov
    по заказу Никонова
******************************************************/


SET AUTODDL ON;
SET ECHO ON;
OUTPUT isql.txt;

CONNECT 'test.fdb'
USER 'sysdba' PASSWORD 'masterkey';
DROP DATABASE;
COMMIT;

SET NAMES WIN1251;
SET SQL DIALECT 3;
CREATE DATABASE 'test.fdb'
USER 'sysdba' PASSWORD 'masterkey'
DEFAULT CHARACTER SET WIN1251;
COMMIT;

CONNECT 'test.fdb'
USER 'sysdba' PASSWORD 'masterkey';





/***************************************************
        Список операторов
****************************************************/
CREATE TABLE Nakladn (
    NN INTEGER NOT NULL,              /*первичный ключ*/
    NumNakladn INTEGER NOT NULL UNIQUE,    /* номер накладной */
    Fam VARCHAR(20) NOT NULL,           /* фамилия */
    Doljn VARCHAR(20),           /* должность */
    PRIMARY KEY(NN)
    );


CREATE GENERATOR Nakladn_NN_GEN;
SET GENERATOR Nakladn_NN_GEN TO 0;
CREATE GENERATOR Nakladn_Num_GEN;
SET GENERATOR Nakladn_Num_GEN TO 0;


SET TERM !;

/**********************************************
    Процедуры и функции
***********************************************/

/**********************************************
    Генераторы первичных ключей
***********************************************/
    CREATE TRIGGER Nakladn_trig FOR Nakladn
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.NN=GEN_ID(Nakladn_NN_GEN,1);
END!

    CREATE TRIGGER Nakladn_Num_trig FOR Nakladn
ACTIVE AFTER INSERT
AS
BEGIN
  UPDATE Nakladn
  SET
  NumNakladn=GEN_ID(Nakladn_Num_GEN,1)
  WHERE (NN=NEW.NN);
END!




/***********************************************
        Начальная инициализация
************************************************/
SET TERM ;!

COMMIT;

Ответить с цитированием