Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с БД в архитектуре 'клиент-сервер'_RTF.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
454.08 Кб
Скачать

Отъем привилегий

REVOKE [GRANT OPTION FOR] {

{ALL [PRIVILEGES] ! SELECT ! DELETE ! INSERT ! UPDATE

[(столбец [, столбец ...])]} ON [TABLE] {ИмяТаблицы ! ИмяПросмотра} FROM {<объект> ! <список_пользователей>} ! EXECUTE ON PROCEDURE ИмяПроцедуры FROM {<объект> I < список пользователей >}

Приложение 2 Пример Script-файла

Рассмотрим Script-файл, осуществляющий создание БД и в ней нескольких таблиц, процедур и триггеров. Перед созданием БД ее старая версия уничтожается и выполняется оператор формата

SET NAMES НаборСимволов;

а именно SET NAMES WINI1251;

Содержимое Script-файла:

Set names WINI1251;

Connect “d:\book\ib_sklad\ib_sklad.gdb” USER “SYSDBA”

PASSWORD “masterkey”;

Drop database;

CREATE DATABASE “d:\book\ib_sklad\ib_sklad.gdb” USER “SYSDBA”

PASSWORD "masterkey"

default character set WIN1251;

connect "d:\book\ib_sklad\ib_skiad.gdb" USER "SYSDBA" PASSWORD "masterkey";

CREATE TABLE POKUPATELI (

POKUP VARCHAR (20) NOT NULL,

GOROD VARCHAR(12) COLLATE,

ADRES VARCHAR(20),

PRIMARY KEY (POKUP) ) ;

CREATE TABLE TOVARY(

TOVAR VARCHAR(20) NOT NULL,

ED_IZM VARCHAR(IO) 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 VARCHAR(20) NOT NULL ,

POKUP VARCHAR(20),

FOREIGN KEY (POKUP) REFERENCES POKUPATELI,

FOREIGN KEY (TOVAR) REFERENCES TOVARY,

);

SET TERM ###;

CREATE PROCEDURE FIND_MAX_KOLVO (IN_TOVAR VARCHAR(20))

RETURNS (MAX_KOLVO INTEGER) AS

BEGIN

SELECT MAX (KOLVO)

FROM RASHOD

INTO : MAX_KOLVO;

SUSPEND;

END ###

CREATE PROCEDURE POK_LIST (IN_TOVAR VARCHAR(20))

RETURN (POK VARCHAR(20)) AS

DECLARE VARIABLE AVG_KOLVO INTEGER;

BEGIN

SELECT AVG(KOLVO)

FROM RASHOD

WHERE TOVAR = : IN_TOVAR

INTO : AVG_KOLVO;

FOR SELECT POKUP

FROM RASHOD

WHERE KOLVO>: AVG_KOLVO

INTO : POK

DO

BEGIN

IF (:POK IS NULL) THEN

POK=”Покупатель не указан”;

SUSPEND;

END

END ###'

CREATE TABLE TOVARY_LOG(

DAT_IZM DATE

DEISTV CHAR(3),

OLD_TOVAR VARCHAR(20),

NEW_TOVAR VARCHAR(20)

) ###

CREATE TRIGGER TOVARY_ADD_LOG FOR TOVARY

AFTER INSERT

AS

BEGIN

INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,

NEW_TOVAR)

VALUES ("NOW",”ADD”, “”, NEW.TOVAR);

END ###

CREATE TRIGGER TOVARY_UPD_LOG FOR TOVARY

AFTER UPDATE

AS

BEGIN

INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,

NEW_TOVAR)

VALUES ("NOW", "UPD", OLD. TOVAR, NEW .TOVAR) ;

END ###

CREATE TRIGGER TOVARY_DEL_LOG FOR TOVARY

ACTIVE

AFTER UPDATE

AS

BEGIN

INSERT INTO TOVARY_LOG (DAT_IZM, DEISTV, OLD_TOVAR,

NEW_TOVAR)

VALUES ("NOW", "DEL",OLD.TOVAR,"") ;

SET TERM ; ###

COMMIT