GD CURRRATE

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «Коэффициент (курс) перевода из одной валюты в другую. <syntaxhighlight lang="SQL"> CREATE TABLE gd_currrate ( id …»)
 
 
Строка 6: Строка 6:
 
   fromcurr      dintkey,
 
   fromcurr      dintkey,
 
   tocurr        dintkey,
 
   tocurr        dintkey,
   fordate        ddate NOT NULL,
+
   fordate        dtimestamp_notnull,
 +
  regulatorkey  dforeignkey,
 
   coeff          dcurrrate,
 
   coeff          dcurrrate,
 +
  amount        dcurrrate_amount,
 +
  val            dcurrrate, /*  value = amount * coeff  */
 
   editiondate    deditiondate
 
   editiondate    deditiondate
 
);
 
);
 +
 +
COMMIT;
 +
 +
SET TERM ^ ;
 +
 +
CREATE OR ALTER TRIGGER gd_bi_currrate FOR gd_currrate
 +
  ACTIVE
 +
  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);
 +
END
 +
^
 +
 +
CREATE OR ALTER TRIGGER gd_biu_currrate FOR gd_currrate
 +
  ACTIVE
 +
  BEFORE INSERT OR UPDATE
 +
  POSITION 32000
 +
AS
 +
BEGIN
 +
  IF (NEW.amount IS NULL) THEN
 +
    NEW.amount = 1;
 +
  IF (NEW.val IS NULL) THEN
 +
    NEW.val = NEW.amount * NEW.coeff;
 +
  ELSE 
 +
    NEW.coeff = NEW.val / NEW.amount;
 +
END
 +
^
 +
 +
SET TERM ; ^
  
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_pk_currrate
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_pk_currrate
Строка 15: Строка 50:
  
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_uk_currrate
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_uk_currrate
   UNIQUE (fromcurr, tocurr, fordate);
+
   UNIQUE (fromcurr, tocurr, fordate, regulatorkey);
  
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_fk1_currrate
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_fk1_currrate
Строка 25: Строка 60:
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_chk1_currrate
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_chk1_currrate
 
   CHECK(fromcurr <> tocurr);
 
   CHECK(fromcurr <> tocurr);
 +
 +
CREATE DESC INDEX gd_x_currrate_fordate ON gd_currrate(fordate);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
[[Category:База данных]]
 
[[Category:База данных]]

Текущая версия на 18:05, 19 января 2017

Коэффициент (курс) перевода из одной валюты в другую.

CREATE TABLE gd_currrate
(
  id             dintkey,
  fromcurr       dintkey,
  tocurr         dintkey,
  fordate        dtimestamp_notnull,
  regulatorkey   dforeignkey,
  coeff          dcurrrate,
  amount         dcurrrate_amount,
  val            dcurrrate, /*  value = amount * coeff  */
  editiondate    deditiondate
);
 
COMMIT;
 
SET TERM ^ ;
 
CREATE OR ALTER TRIGGER gd_bi_currrate FOR gd_currrate 
  ACTIVE
  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);
END
^
 
CREATE OR ALTER TRIGGER gd_biu_currrate FOR gd_currrate 
  ACTIVE
  BEFORE INSERT OR UPDATE
  POSITION 32000
AS
BEGIN
  IF (NEW.amount IS NULL) THEN
    NEW.amount = 1;
  IF (NEW.val IS NULL) THEN
    NEW.val = NEW.amount * NEW.coeff;
  ELSE  
    NEW.coeff = NEW.val / NEW.amount; 
END
^
 
SET TERM ; ^
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_pk_currrate
  PRIMARY KEY (id);
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_uk_currrate
  UNIQUE (fromcurr, tocurr, fordate, regulatorkey);
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_fk1_currrate
  FOREIGN KEY (fromcurr) REFERENCES gd_curr (id) ON UPDATE CASCADE;
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_fk2_currrate
  FOREIGN KEY (tocurr) REFERENCES gd_curr (id) ON UPDATE CASCADE;
 
ALTER TABLE gd_currrate ADD CONSTRAINT gd_chk1_currrate
  CHECK(fromcurr <> tocurr);
 
CREATE DESC INDEX gd_x_currrate_fordate ON gd_currrate(fordate);
Персональные инструменты
Пространства имён

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