Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание БД с помощью ISQL.EXE [D6, IB6.x]


Tomkat ©   (2004-12-27 12:34:00) 

Hi, мастера! Кто подскажет (желательно в примере) создание БД из скрипта с помощью утилиты isql.exe
Заранее благодарен.


AHTOH   (2004-12-27 18:20:00) [1]

сорри, перед объявлением таблиц забыл домены описать ....


CREATE DOMAIN ID_TYPE BIGINT NOT NULL;
CREATE DOMAIN NUM_TYPE INTEGER NOT NULL;
CREATE DOMAIN STRING VARCHAR(256) DEFAULT '<NO NAME>';


AHTOH   (2004-12-27 18:17:00) [2]

Не знаю, как остальные, но я делаю ручками, но с помощью IBExpert:

SET SQL DIALECT 3;
SET NAMES WIN1251;

CREATE DATABASE 'localhost:MAINDB'

USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE = 4096 DEFAULT CHARACTER SET WIN1251;

CONNECT 'localhost:MAINDB' USER 'SYSDBA' PASSWORD 'masterkey';

CREATE TABLE JOB
(
JOB_ID  ID_TYPE PRIMARY KEY,
JOB_NAME STRING /* наименование должности */
);

/* === создание ID-генератора для таблицы должностей === */

CREATE GENERATOR GEN_JOB_ID;
SET GENERATOR GEN_JOB_ID TO 0;

/* === создание триггера для ID-генератора таблицы должностей === */

SET TERM ^ ;

CREATE TRIGGER JOB_BI FOR JOB
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.JOB_ID IS NULL) THEN NEW.JOB_ID = GEN_ID(GEN_JOB_ID,1);
END ^

SET TERM ; ^

/* === внесение данных в таблицу должностей === */

INSERT INTO JOB (JOB_NAME) VALUES('бухгалтер');
INSERT INTO JOB (JOB_NAME) VALUES('грузчик');
INSERT INTO JOB (JOB_NAME) VALUES('кассир');
INSERT INTO JOB (JOB_NAME) VALUES('кладовщик');
INSERT INTO JOB (JOB_NAME) VALUES('контролер');
INSERT INTO JOB (JOB_NAME) VALUES('координатор');
INSERT INTO JOB (JOB_NAME) VALUES('логистик');
INSERT INTO JOB (JOB_NAME) VALUES('менеджер');
INSERT INTO JOB (JOB_NAME) VALUES('оператор');
INSERT INTO JOB (JOB_NAME) VALUES('системный администратор');
INSERT INTO JOB (JOB_NAME) VALUES('старший менеджер');

COMMIT;

CREATE TABLE PERSONAL
(
PERSONAL_ID  ID_TYPE PRIMARY KEY,
PERSONAL_JOB_ID  ID_TYPE, /* #ссылка на таблицу должностей */
PERSONAL_FAM  STRING,  /* фамилия */
PERSONAL_NAME  STRING,  /* имя */
PERSONAL_PAR  STRING,  /* отчество */
PERSONAL_FULLNAME   /* полное имя - ФИО (вычисляемое поле)*/
 COMPUTED BY (PERSONAL_FAM || ' ' || PERSONAL_NAME || ' ' || PERSONAL_PAR),
PERSONAL_STATUS  NUM_TYPE,
PERSONAL_INFO  STRING,  /* прочая информация */

FOREIGN KEY(PERSONAL_JOB_ID) REFERENCES JOB(JOB_ID)
);

/* === создание ID-генератора для таблицы работников === */

CREATE GENERATOR GEN_PERSONAL_ID;
SET GENERATOR GEN_PERSONAL_ID TO 0;

/* === создание триггера для ID-генератора таблицы работников === */

SET TERM ^ ;

CREATE TRIGGER PERSONAL_BI FOR PERSONAL
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
 IF (NEW.PERSONAL_ID IS NULL) THEN NEW.PERSONAL_ID = GEN_ID(GEN_PERSONAL_ID,1);
END ^

SET TERM ; ^

/* === внесение данных в таблицу работников === */

INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS, PERSONAL_INFO)
 VALUES(4,'Пупкин','Василий', 'Степанович',1,' хороший кладовщик!');
INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS, PERSONAL_INFO)
 VALUES(2,'Полежаев','Виктор', 'Андреевич',0,'хреновый был грузчик! Много бухал и до фига накосячил. Потому и уволили');
INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS,PERSONAL_INFO)
 VALUES(1,'Клопова','Татьяна', 'Владимировна',1,'наш бухгалтер: не курит, не пьет и к сексу равнодушна');
INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS,PERSONAL_INFO)
 VALUES(5,'Берия','Георгий', 'Зурабович',1,'Вах! строгий контролер!');
INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS,PERSONAL_INFO)
 VALUES(11,'Ситников','Виктор', 'Иванович',1,'Всем манагерам манагер! А еще корешится с ментами и прочей конторой');
INSERT INTO PERSONAL(PERSONAL_JOB_ID, PERSONAL_FAM, PERSONAL_NAME, PERSONAL_PAR, PERSONAL_STATUS,PERSONAL_INFO)
 VALUES(5,'Фридлянд','Григорий', 'Юльевич',0,'Уволили за то, что отказывался работать по субботам');

COMMIT;


Amoeba   (2004-12-27 17:41:00) [3]

Используй лучше IBExpert. Очень мощная и удобная программа. Для xUSSR он бесплатен.
http://www.ibexpert.com/rus/


Johnmen   (2004-12-27 12:52:00) [4]

Пример можно получить самому.
Для этого надо всего лишь "получить метаданные" с помощью той же IBConsole. И раскомментарить CREATE DATABASE...


Наверх

Титульная страница Поиск, карта сайта Написать письмо