RP REPORTGROUP

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 1: Строка 1:
 
 
CREATE TABLE rp_reportgroup
 
CREATE TABLE rp_reportgroup
 
   (
 
   (
Строка 11: Строка 10:
 
     reserved      dinteger
 
     reserved      dinteger
 
   );
 
   );
 
+
 
   ALTER TABLE rp_reportgroup
 
   ALTER TABLE rp_reportgroup
 
     ADD CONSTRAINT rp_pk_reportgroup PRIMARY KEY (id);
 
     ADD CONSTRAINT rp_pk_reportgroup PRIMARY KEY (id);
 
+
 
   CREATE UNIQUE INDEX rp_x_reportgroup_ugn ON rp_reportgroup
 
   CREATE UNIQUE INDEX rp_x_reportgroup_ugn ON rp_reportgroup
 
     /*COMPUTED BY (UPPER(usergroupname));*/
 
     /*COMPUTED BY (UPPER(usergroupname));*/
 
     (usergroupname);
 
     (usergroupname);
 
+
 
   CREATE UNIQUE INDEX rp_x_reportgroup_lrn ON
 
   CREATE UNIQUE INDEX rp_x_reportgroup_lrn ON
 
     rp_reportgroup (name, parent);
 
     rp_reportgroup (name, parent);
 
+
 
   ALTER TABLE rp_reportgroup ADD CONSTRAINT rp_fk_reportgroup_parent
 
   ALTER TABLE rp_reportgroup ADD CONSTRAINT rp_fk_reportgroup_parent
 
     FOREIGN KEY (parent) REFERENCES rp_reportgroup(id)
 
     FOREIGN KEY (parent) REFERENCES rp_reportgroup(id)
 
     ON UPDATE CASCADE
 
     ON UPDATE CASCADE
 
     ON DELETE CASCADE;
 
     ON DELETE CASCADE;
 
+
 
   ALTER TABLE gd_documenttype ADD CONSTRAINT gd_fk_documenttype_rpgroupkey
 
   ALTER TABLE gd_documenttype ADD CONSTRAINT gd_fk_documenttype_rpgroupkey
 
     FOREIGN KEY (reportgroupkey) REFERENCES rp_reportgroup (id) ON UPDATE CASCADE;
 
     FOREIGN KEY (reportgroupkey) REFERENCES rp_reportgroup (id) ON UPDATE CASCADE;
 
+
 
   COMMIT;
 
   COMMIT;
 
+
 
   SET TERM ^ ;
 
   SET TERM ^ ;
 
+
 
   CREATE TRIGGER rp_before_insert_reportgroup FOR rp_reportgroup
 
   CREATE TRIGGER rp_before_insert_reportgroup FOR rp_reportgroup
 
     BEFORE INSERT
 
     BEFORE INSERT
Строка 45: Строка 44:
 
   END
 
   END
 
   ^
 
   ^
 
+
 
   CREATE PROCEDURE rp_p_checkgrouptree (newparent INTEGER, id INTEGER)
 
   CREATE PROCEDURE rp_p_checkgrouptree (newparent INTEGER, id INTEGER)
 
   RETURNS (
 
   RETURNS (

Версия 18:35, 11 мая 2013

CREATE TABLE rp_reportgroup

 (
   id             dintkey,
   parent         dforeignkey,
   name           dname,
   description    dtext180,
   lb               dlb,
   rb               drb,
   usergroupname  dname DEFAULT ,
   reserved       dinteger
 );

 ALTER TABLE rp_reportgroup
   ADD CONSTRAINT rp_pk_reportgroup PRIMARY KEY (id);

 CREATE UNIQUE INDEX rp_x_reportgroup_ugn ON rp_reportgroup
   /*COMPUTED BY (UPPER(usergroupname));*/
   (usergroupname);

 CREATE UNIQUE INDEX rp_x_reportgroup_lrn ON
   rp_reportgroup (name, parent);

 ALTER TABLE rp_reportgroup ADD CONSTRAINT rp_fk_reportgroup_parent
   FOREIGN KEY (parent) REFERENCES rp_reportgroup(id)
   ON UPDATE CASCADE
   ON DELETE CASCADE;

 ALTER TABLE gd_documenttype ADD CONSTRAINT gd_fk_documenttype_rpgroupkey
   FOREIGN KEY (reportgroupkey) REFERENCES rp_reportgroup (id) ON UPDATE CASCADE;

 COMMIT;

 SET TERM ^ ;

 CREATE TRIGGER rp_before_insert_reportgroup FOR rp_reportgroup
   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.usergroupname IS NULL) THEN
     NEW.usergroupname = CAST(NEW.id AS varchar(60));
 END
 ^

 CREATE PROCEDURE rp_p_checkgrouptree (newparent INTEGER, id INTEGER)
 RETURNS (
     include INTEGER
 )
 AS
   DECLARE VARIABLE I INTEGER;
 begin
   IF (newparent = id) THEN
   BEGIN
     include = 1;
     EXIT;
   END ELSE
     include = 0;
   FOR SELECT id FROM rp_reportgroup WHERE parent = :id INTO :I do
   BEGIN
     IF (newparent = I) THEN
     BEGIN
       include = 1;
       EXIT;
     END ELSE
     BEGIN
       EXECUTE PROCEDURE rp_p_checkgrouptree(:newparent, :I) RETURNING_VALUES :include;
       if (include = 1) then
         EXIT;
     END
   END
 END
 ^
 SET TERM ; ^
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты