GD PEOPLE
Материал из GedeminWiki
CREATE TABLE gd_people
(
contactkey dintkey,
firstname dtext20, /* Імя */
surname dtext20 NOT NULL,/* Прозвішча */
middlename dtext20, /* Імя па бацьку */
nickname dtext20, /* Кароткае імя */
rank dtext20, /* Званіе */
/* Хатнія дадзеныя */
hplacekey dforeignkey,
haddress dtext60, /* Адрас */
hcity dtext20, /* Горад */
hregion dtext20, /* Вобласць */
hZIP dtext20, /* Індэкс */
hcountry dtext20, /* Краіна */
hdistrict dtext20,
hphone dtext20,
/* Працоўныя дадзеныя */
wcompanykey dforeignkey,
wcompanyname dtext60, /* Кампанія */
wdepartment dtext20, /* Падраздзяленьне */
wpositionkey dforeignkey,
/* Пэрсанальныя дадзеныя */
spouse dtext20, /* Супруг/супруга */
children dtext20, /* Дзеткі */
sex dgender, /* Пол */
birthday ddate, /* Дата нараджэньня */
/* Пашпартныя дадзеныя */
passportnumber dtext40, /* нумар пашпарту */
/*passportdate ddate,*/ /* ??? */
passportexpdate ddate, /* тэрмін дзеяння пашпарту */
passportissdate ddate, /* дата выдачы */
passportissuer dtext40, /* хто выдаў */
passportisscity dtext20, /* дзе выдадзены */
personalnumber dtext40, /* пэрсанальны номер */
/*Угодкі*/
/* Дадатковая інфармацыя */
visitcard dBMP, /* Візітная картка */
photo dBMP /* Фота */
);
ALTER TABLE gd_people
ADD CONSTRAINT gd_pk_people PRIMARY KEY (contactkey);
ALTER TABLE gd_people ADD CONSTRAINT gd_fk_people_contactkey
FOREIGN KEY (contactkey) REFERENCES gd_contact(id)
ON UPDATE CASCADE
ON DELETE CASCADE;
/* калі выдаляецца кампанія на якую спасылаецца чалавек */
/* нічога страшнага -- ануліруем гэную спасылку і ўсё */
ALTER TABLE gd_people ADD CONSTRAINT gd_fk_people_companykey
FOREIGN KEY (wcompanykey) REFERENCES gd_contact(id)
ON UPDATE CASCADE
ON DELETE SET NULL;
ALTER TABLE gd_people ADD CONSTRAINT gd_fk_people_positionkey
FOREIGN KEY (wpositionkey) REFERENCES wg_position(id)
ON UPDATE CASCADE
ON DELETE SET NULL;
ALTER TABLE gd_people ADD CONSTRAINT gd_fk_people_hplacekey
FOREIGN KEY (hplacekey) REFERENCES gd_place(id)
ON UPDATE CASCADE
ON DELETE SET NULL;
CREATE TRIGGER gd_bi_people FOR gd_people
BEFORE INSERT
POSITION 0
AS
BEGIN
NEW.rank = NULL;
SELECT SUBSTRING(name FROM 1 FOR 20) FROM wg_position WHERE id = NEW.wpositionkey
INTO NEW.rank;
IF (NOT NEW.wcompanykey IS NULL) THEN
BEGIN
SELECT name FROM gd_contact WHERE id = NEW.wcompanykey
INTO NEW.wcompanyname;
END
END
CREATE TRIGGER gd_bu_people FOR gd_people
BEFORE UPDATE
POSITION 0
AS
BEGIN
NEW.rank = NULL;
SELECT SUBSTRING(name FROM 1 FOR 20) FROM wg_position WHERE id = NEW.wpositionkey
INTO NEW.rank;
IF (NOT NEW.wcompanykey IS NULL) THEN
BEGIN
SELECT name FROM gd_contact WHERE id = NEW.wcompanykey
INTO NEW.wcompanyname;
END
END