Создание БД или таблицы программно. Для этого создаем каталог для БД Interbase:
открываем текстовый файл с помощью Delphi или Word;
набираем соответствующий текст (см. примеры).
Пример 1. Рассмотрим создание БД ib_SQL.gdb и таблиц 3-5 (Tovary, Rashod и Pokupateli). Для этого открываем каталог d:\aaa\ и набираем с использованием средств Delphi или Word в текстовый файл следующий текст
/*Создание с БД*/
Create database "d:\aaa\ib_SQL.gdb "USER "A" PASSWORD "1";
/*Соединение с БД*/
CONNECT "d:\aaa\ib_SQL.gdb "USER "A" PASSWORD "1"; CREATE TABLE POKUPATELI(
POKUP CHAR(20) NOT NULL, GOROD CHAR(12) NOT NULL, ADRES CHAR(20) NOT NULL, PRIMARY KEY(POKUP)
);
CREATE TABLE TOVARY( TOVAR CHAR(20) NOT NULL, ED_IZM CHAR(10) NOT NULL, ZENA INTEGER NOT NULL, PRIMARY KEY(TOVAR)
);
CREATE TABLE RASHOD(
N_RASH INTEGER NOT NULL, DAT_RASH DATE NOT NULL, KOLVO INTEGER NOT NULL, TOVAR CHAR(20) NOT NULL, POKUP CHAR(20) NOT NULL, PRIMARY KEY(N_RASH),
FOREIGN KEY(POKUP) REFERENCES POKUPATELI, FOREIGN KEY(TOVAR) REFERENCES TOVARY
);
Задание ключа FOREIGN KEY(TOVAR) REFERENCES TOVARY не дает возможность изменять или удалять запись в поле TOVAR таблицы TOVARY если имеется хотя бы одна запись в таблице RASHOD. Для того, чтобы это осуществить, сначала необходимо удалить соответствующее ограничение целостности- Refrential Integrety (SQL Explorer|ib_SQL|Tables|RASHOD| Refrential Integrety) – в нашем случае INTEG_16, набирая и выполняя следующий оператор в WISQL (в таком режиме он выполняет только один оператор)
ALTER TABLE RASHOD
DROP CONSTRAINT INTEG_16,
и аналогично последовательно записать и выполнить следующие триггеры (TRIGGER) (подпрограммы, выполняемые автоматически до и (или) после события изменения записи в таблице)
CREATE TRIGGER BU_TOVARY FOR TOVARY ACTIVE
BEFORE UPDATE AS
BEGIN
IF (OLD.TOVAR<>NEW.TOVAR) THEN UPDATE RASHOD
SET TOVAR = NEW.TOVAR WHERE TOVAR = OLD.TOVAR;
END;
CREATE TRIGGER AD_TOVARY FOR TOVARY ACTIVE
AFTER DELETE AS
BEGIN
DELETE FROM RASHOD
WHERE RASHOD.TOVAR = TOVARY.TOVAR; END;
Пример 2. (Создание таблицы POTOK)
Достарыңызбен бөлісу: |