GD FUNCTION
Материал из GedeminWiki
CREATE TABLE gd_function ( id dintkey, /* Первичный ключ */ module dtext40, /* Модуль */ LANGUAGE dtext10, /* Язык программирования */ name dlongname, /* Наименование функции */ comment dtext180, /* Комментарий к функции */ script dscript, /* Текст функции */ displayscript dscript, /* Видимый текст функции *//*Данное поле можно удалить*/ afull dsecurity, /* Права доступа полные *//*Данное поле можно удалить*/ achag dsecurity, /* Права доступа на изменения *//*Данное поле можно удалить*/ aview dsecurity, /* права доступа на просмотр *//*Данное поле можно удалить*/ modifydate dtimestamp, /*Данное поле можно удалить*/ testresult dblob80, /* Поле для отчетов. Для хранения пустой структуры. */ ownername dtext40, /*Данное поле можно удалить*/ functiontype dfunctiontype, /*Данное поле можно удалить*/ event dtext40, localname dtext40, /* Название функции на русском языке *//*Данное поле можно удалить*/ publicfunction dboolean DEFAULT 1 NOT NULL, /* Внутрення или внешняя функция *//*Данное поле можно удалить*/ shortcut dtext10, /* Горячая клавиша *//*Данное поле можно удалить*/ groupname dtext20, /* Название группы *//*Данное поле можно удалить*/ modulecode dinteger NOT NULL, /* код модуля */ enteredparams dblob80, reserved dinteger, /* Зарезервировано */ inheritedrule dinheritedrule, /* Поле для событий указывает на момент перекрытия. Оно может принимать три значения: 0 - перекрывать полностью; 1 - вызывать родительский обработчик до скрипт-функции; 2 - вызывать обработчик после выполнения скрипт-функции.*/ breakpoints dblob80, /* Поле хранит информацию о точках прерывания*/ usedebuginfo dboolean, /* Указывает на необходимость использования отладчика при запуске функции*/ /*Данное поле можно удалить*/ editorstate dblob80, /* Хранится положение курсора редактора, закладки и т.п.*/ editiondate deditiondate, /* Дата последнего редактирования */ editorkey dintkey /* Ссылка на пользователя, который редактировал запись*/ ); ALTER TABLE gd_function ADD CONSTRAINT gd_pk_function PRIMARY KEY (id); /* пакуль што мы падтрымлiваем 1 мову */ ALTER TABLE gd_function ADD CONSTRAINT gd_chk_function_language CHECK (LANGUAGE IN ('JScript', 'VBScript')); /* назва функцыi павiнна быць унiкальнай */ /* у межах аднаго модулю */ CREATE UNIQUE INDEX gd_x_function_name ON gd_function (name, modulecode); CREATE INDEX gd_x_function_module ON gd_function (module); ALTER TABLE gd_function ADD CONSTRAINT gd_fk_function_editorkey FOREIGN KEY(editorkey) REFERENCES gd_people(contactkey) ON UPDATE CASCADE; COMMIT; CREATE GENERATOR gd_g_functionch; SET GENERATOR gd_g_functionch TO 1; COMMIT; SET TERM ^ ; CREATE TRIGGER gd_function_ad_ch FOR gd_function AFTER DELETE POSITION 32000 AS DECLARE VARIABLE I INTEGER; BEGIN I = GEN_ID(gd_g_functionch, 1); END ^ CREATE TRIGGER gd_bi_function FOR gd_function BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(gd_g_unique, 1) + GEN_ID(gd_g_offset, 0); /* NEW.modifydate = 'NOW';*/ IF (NEW.modulecode IS NULL) THEN NEW.modulecode = 1010001;/*ид апликатион*/ IF (NEW.publicfunction IS NULL) THEN NEW.publicfunction = 0; END ^ CREATE TRIGGER gd_bu_function FOR gd_function BEFORE UPDATE POSITION 0 AS BEGIN IF (NEW.modulecode IS NULL) THEN BEGIN IF (OLD.modulecode IS NULL) THEN NEW.modulecode = 1010001; ELSE NEW.modulecode = OLD.modulecode; END IF (NEW.publicfunction IS NULL) THEN BEGIN IF (OLD.publicfunction IS NULL) THEN NEW.publicfunction = 0; ELSE NEW.publicfunction = OLD.publicfunction; END END ^ CREATE TRIGGER gd_bi_function5 FOR gd_function BEFORE INSERT POSITION 5 AS BEGIN IF (NEW.editorkey IS NULL) THEN NEW.editorkey = 650002; IF (NEW.editiondate IS NULL) THEN NEW.editiondate = CURRENT_TIMESTAMP; END ^ CREATE TRIGGER gd_bu_function5 FOR gd_function BEFORE UPDATE POSITION 5 AS BEGIN IF (NEW.editorkey IS NULL) THEN NEW.editorkey = 650002; IF (NEW.editiondate IS NULL) THEN NEW.editiondate = CURRENT_TIMESTAMP; END ^ SET TERM ; ^