GD USER

Материал из GedeminWiki
Версия от 20:11, 10 мая 2007; SYSDBA (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
 CREATE TABLE gd_user
 (
   id               dintkey,                     /* Первичный ключ                                    */
   name             dusername,                   /* имя                                               */
   passw            dpassword,                   /* пароль                                            */
   ingroup          dinteger DEFAULT 1 NOT NULL, /* группы, в которые входит пользователь             */
   fullname         dtext180,                    /* полное имя                                        */
   description      dtext180,                    /* описание                                          */
   ibname           dusername,                   /* имя пользователя IB                               */
   ibpassword       dpassword,                   /* пароль IB                                         */
   contactkey       dintkey,                     /* ссылка на запись в таблице контактов              */
   externalkey      dforeignkey,                 /* внешняя ссылка, например на справочник сотрудников*/
   disabled         dboolean DEFAULT 0 NOT NULL, /* отключен                                          */
   lockedout        dboolean DEFAULT 0,          /* запись заблокирована                              */
   mustchange       dboolean DEFAULT 0,          /* при входе пользователь должен изменить пароль     */
   cantchangepassw  dboolean DEFAULT 1,          /* пользователь не может менять пароль               */
   passwneverexp    dboolean DEFAULT 1,          /* срок действия пароля никогда не истекает          */
   expdate          ddate,                       /* дата истечения срока действия пароля              */
   workstart        dtime,                       /* начало рабочего дня                               */
   workend          dtime,                       /* окончание рабочего дня                            */
   allowaudit       dallowaudit,                 /* будут ли операции этого пользователя заноситься   */
                                                 /* в журнал                                          */
   editiondate      deditiondate,
   editorkey        dforeignkey,

   icon             dinteger,                    /* пиктограмка для данного пользователя              */
   reserved         dinteger,                    /* зарезервировано                                   */

   CHECK (((workstart IS NULL) AND (workend IS NULL)) OR (workstart < workend)),
   CHECK (ingroup <> 0)
 );

 ALTER TABLE gd_user ADD CONSTRAINT gd_pk_user
   PRIMARY KEY (id);

 /* имя пользователя должно быть уникальным */
 CREATE UNIQUE ASC INDEX gd_x_user_name ON gd_user
   (name);

 CREATE UNIQUE INDEX gd_x_user_ibname ON
   gd_user (ibname);

 SET TERM ^ ;

 CREATE TRIGGER gd_bi_user FOR gd_user
   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.ingroup IS NULL) THEN
     NEW.ingroup = 0;
   IF (NEW.disabled IS NULL) THEN
     NEW.disabled = 0;
   IF (NEW.mustchange IS NULL) THEN
     NEW.mustchange = 0;
   IF (NEW.cantchangepassw IS NULL) THEN
     NEW.cantchangepassw = 1;
   IF (NEW.passwneverexp IS NULL) THEN
     NEW.passwneverexp = 1;
   IF (NEW.lockedout IS NULL) THEN
     NEW.lockedout = 0;
 END
 ^

 CREATE EXCEPTION gd_e_invaliduserupdate 'At least one user must be enabled'^

 CREATE TRIGGER gd_bu_user FOR gd_user
   BEFORE UPDATE
   POSITION 0
 AS
 BEGIN
   IF ((NEW.disabled = 1) AND (OLD.disabled = 0) AND
       (SINGULAR (SELECT * FROM gd_user WHERE disabled = 0))) THEN
     EXCEPTION gd_e_invaliduserupdate;
 END
 ^

 CREATE EXCEPTION gd_e_invaliduserdelete 'Cannt delete all users'^

 CREATE TRIGGER gd_bd_user FOR gd_user
   BEFORE DELETE
   POSITION 0
 AS
 BEGIN
   /* выдаліць адміністратара немагчыма */
   IF (OLD.ID = 150001) THEN
     EXCEPTION gd_e_invaliduserdelete;
 END
 ^

 SET TERM ; ^
Персональные инструменты
Пространства имён

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