RP REPORTLIST
Материал из GedeminWiki
CREATE TABLE rp_reportlist
(
id dintkey, /* идентификатор */
name dname, /* наименование отчета */
description dtext180, /* комментарий */
frqrefresh dinteger DEFAULT 1, /* частота обновления в днях */
reportgroupkey dintkey,
paramformulakey dforeignkey,
mainformulakey dintkey,
eventformulakey dforeignkey,
templatekey dforeignkey,
IsRebuild dboolean,
afull dsecurity,
achag dsecurity,
aview dsecurity,
serverkey dforeignkey,
islocalexecute dboolean DEFAULT 0,
preview dboolean DEFAULT 1,
modalpreview dboolean_notnull DEFAULT 0,
globalreportkey dinteger, /* Глобальный идентификатор отчета */
/* Должен задаваться программистом */
editiondate deditiondate, /* Дата последнего редактирования */
editorkey dintkey, /* Ссылка на пользователя, который редактировал запись*/
displayinmenu dboolean DEFAULT 1, /* Отображать в меню формы */
reserved dinteger,
folderkey dforeignkey
);
ALTER TABLE rp_reportlist
ADD CONSTRAINT rp_pk_reportlist PRIMARY KEY (id);
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_groupkey
FOREIGN KEY (reportgroupkey) REFERENCES rp_reportgroup(id)
ON UPDATE CASCADE;
CREATE UNIQUE INDEX rp_x_reportlist_namerpgroup
ON rp_reportlist(name, reportgroupkey);
/* Для ниже перечисленных констрейнов НЕЛЬЗЯ СТАВИТЬ DELETE CASCADE */
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_paramfkey
FOREIGN KEY (paramformulakey) REFERENCES gd_function(id)
ON UPDATE CASCADE;
/* Для ниже перечисленных констрейнов НЕЛЬЗЯ СТАВИТЬ DELETE CASCADE */
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_mainfkey
FOREIGN KEY (mainformulakey) REFERENCES gd_function(id)
ON UPDATE CASCADE;
/* Для ниже перечисленных констрейнов НЕЛЬЗЯ СТАВИТЬ DELETE CASCADE */
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_eventfkey
FOREIGN KEY (eventformulakey) REFERENCES gd_function(id)
ON UPDATE CASCADE;
/* Для ниже перечисленных констрейнов НЕЛЬЗЯ СТАВИТЬ DELETE CASCADE */
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_templatefkey
FOREIGN KEY (templatekey) REFERENCES rp_reporttemplate(id)
ON UPDATE CASCADE;
ALTER TABLE rp_reportlist ADD CONSTRAINT rp_fk_reportlist_editorkey
FOREIGN KEY(editorkey) REFERENCES gd_people(contactkey)
ON UPDATE CASCADE;
ALTER TABLE RP_REPORTLIST ADD CONSTRAINT FK_RP_REPORTLIST_FOLDERKEY
FOREIGN KEY (FOLDERKEY) REFERENCES GD_COMMAND (ID)
ON DELETE SET NULL ON UPDATE CASCADE;
COMMIT;
SET TERM ^ ;
CREATE TRIGGER rp_before_insert_reportlist FOR rp_reportlist
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);
IF (NEW.islocalexecute IS NULL) THEN
NEW.islocalexecute = 0;
END
^
CREATE TRIGGER rp_bi_reportlist5 FOR rp_reportlist
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 rp_bu_reportlist5 FOR rp_reportlist
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 ; ^