Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
doc:jroboplc:modules:motohr_db [2025/02/23 16:27]
denis
doc:jroboplc:modules:motohr_db [2025/03/21 13:38] (текущий)
denis
Строка 1: Строка 1:
 <code sql> <code sql>
 /​******************************************************************************/​ /​******************************************************************************/​
-/***          Generated by IBExpert 2022.3.4.1 ​23.02.2025 20:26:11          ***/+/***          Generated by IBExpert 2022.3.4.1 ​21.03.2025 17:38:08          ***/
 /​******************************************************************************/​ /​******************************************************************************/​
  
Строка 18: Строка 18:
 CREATE DOMAIN JROBO_MOTOHR AS CREATE DOMAIN JROBO_MOTOHR AS
 INTEGER; INTEGER;
 +
 +
 +
 +/​******************************************************************************/​
 +/***                            Stored functions ​                           ***/
 +/​******************************************************************************/​
 +
 +
 +
 +SET TERM ^ ;
 +
 +CREATE FUNCTION MH_CNT_SEC (
 +    SEC INTEGER,
 +    DT TIMESTAMP,
 +    RUNNING SMALLINT,
 +    TIMER SMALLINT)
 +RETURNS INTEGER
 +AS
 +BEGIN
 +  RETURN NULL;
 +END^
 +
 +
 +
 +
 +
 +
 +SET TERM ; ^
  
  
Строка 31: Строка 59:
     MACH_ID ​         INTEGER,     MACH_ID ​         INTEGER,
     COUNTER_TYPE_ID ​ INTEGER,     COUNTER_TYPE_ID ​ INTEGER,
-    SEC              INTEGER,+    SEC              INTEGER ​DEFAULT 2147483647,
     DELETED ​         SMALLINT DEFAULT 0     DELETED ​         SMALLINT DEFAULT 0
 ); );
Строка 37: Строка 65:
 CREATE TABLE MH_COUNTER_TYPE ( CREATE TABLE MH_COUNTER_TYPE (
     ID       ​INTEGER GENERATED BY DEFAULT AS IDENTITY,     ID       ​INTEGER GENERATED BY DEFAULT AS IDENTITY,
-    NAME     ​VARCHAR(64) NOT NULL, 
     DESCR    VARCHAR(128),​     DESCR    VARCHAR(128),​
     TIMER    SMALLINT DEFAULT 0,     TIMER    SMALLINT DEFAULT 0,
Строка 49: Строка 76:
     DTEND    TIMESTAMP,     DTEND    TIMESTAMP,
     SEC      INTEGER     SEC      INTEGER
 +);
 +
 +CREATE TABLE MH_LOGBOOK (
 +    ID       ​INTEGER GENERATED BY DEFAULT AS IDENTITY,
 +    MACH_ID ​ INTEGER,
 +    DT       ​TIMESTAMP,​
 +    TEXT     ​VARCHAR(512),​
 +    FIO      VARCHAR(64)
 ); );
  
Строка 94: Строка 129:
     MACH_DESCR,     MACH_DESCR,
     RUNNING,     RUNNING,
-    COUNTER_NAME,​ 
     COUNTER_DESCR,​     COUNTER_DESCR,​
     TIMER,     TIMER,
Строка 106: Строка 140:
   M.DESCR MACH_DESCR,   M.DESCR MACH_DESCR,
   MS.RUNNING RUNNING,   MS.RUNNING RUNNING,
-  CT.NAME COUNTER_NAME,​ 
   CT.DESCR COUNTER_DESCR,​   CT.DESCR COUNTER_DESCR,​
   CT.TIMER TIMER,   CT.TIMER TIMER,
-  ​CAST(C.SEC ​+ IIF(CT.TIMER = 01, -1) * IIF(MS.RUNNING ​= 00, (CURRENT_TIMESTAMP - MS.DT) * 86400) AS INTEGER) SEC+  ​MH_CNT_SEC(C.SEC, MS.DT, MS.RUNNING, ​CT.TIMER) SEC
 FROM MH_COUNTER C FROM MH_COUNTER C
 JOIN MH_COUNTER_TYPE CT ON CT.ID = C.COUNTER_TYPE_ID JOIN MH_COUNTER_TYPE CT ON CT.ID = C.COUNTER_TYPE_ID
Строка 117: Строка 150:
   C.DELETED=0   C.DELETED=0
 -- --
--- Usage example (clause ​plan is optional and used for better perfomance):​+-- Usage example (clause ​PLAN is optional and used for better perfomance):​
 -- --
 -- select * from mh_pivot p -- select * from mh_pivot p
 -- where counter_name = '​total'​ and mach_name = '​M1001'​ -- where counter_name = '​total'​ and mach_name = '​M1001'​
--- plan join ( +-- plan join (
 --   p m index (mh_uq_mach_name),​ --   p m index (mh_uq_mach_name),​
 --   p ct index(mh_uq_countertype_name),​ --   p ct index(mh_uq_countertype_name),​
---   p c index(mh_ix_counter_machtype), ​+--   p c index(mh_ix_counter_machtype),​
 --   p ms index (mh_fk_machstate_mach)) --   p ms index (mh_fk_machstate_mach))
 ; ;
 +
 +
 +
 +
 +/​******************************************************************************/​
 +/***                        Autoincrement generators ​                       ***/
 +/​******************************************************************************/​
 +
 +ALTER TABLE MH_COUNTER ALTER ID RESTART WITH 577;
 +ALTER TABLE MH_COUNTER_TYPE ALTER ID RESTART WITH 4;
 +ALTER TABLE MH_INTERVAL ALTER ID RESTART WITH 0;
 +ALTER TABLE MH_LOGBOOK ALTER ID RESTART WITH 8;
 +ALTER TABLE MH_MACH ALTER ID RESTART WITH 555;
 +ALTER TABLE MH_STAT ALTER ID RESTART WITH 266400;
 +
 +
  
  
Строка 133: Строка 182:
 /​******************************************************************************/​ /​******************************************************************************/​
  
-ALTER TABLE MH_COUNTER_TYPE ADD CONSTRAINT MH_UQ_COUNTERTYPE_NAME UNIQUE (NAME); 
 ALTER TABLE MH_MACH ADD CONSTRAINT MH_UQ_MACH_NAME UNIQUE (NAME); ALTER TABLE MH_MACH ADD CONSTRAINT MH_UQ_MACH_NAME UNIQUE (NAME);
  
Строка 144: Строка 192:
 ALTER TABLE MH_COUNTER_TYPE ADD CONSTRAINT MH_PK_COUNTERTYPE PRIMARY KEY (ID); ALTER TABLE MH_COUNTER_TYPE ADD CONSTRAINT MH_PK_COUNTERTYPE PRIMARY KEY (ID);
 ALTER TABLE MH_INTERVAL ADD CONSTRAINT MH_PK_INVERVAL PRIMARY KEY (ID); ALTER TABLE MH_INTERVAL ADD CONSTRAINT MH_PK_INVERVAL PRIMARY KEY (ID);
 +ALTER TABLE MH_LOGBOOK ADD CONSTRAINT MH_PK_LOGBOOK PRIMARY KEY (ID);
 ALTER TABLE MH_MACH ADD CONSTRAINT MH_PK_MACH PRIMARY KEY (ID); ALTER TABLE MH_MACH ADD CONSTRAINT MH_PK_MACH PRIMARY KEY (ID);
 ALTER TABLE MH_REPO ADD PRIMARY KEY (NAME); ALTER TABLE MH_REPO ADD PRIMARY KEY (NAME);
Строка 156: Строка 205:
 ALTER TABLE MH_COUNTER ADD CONSTRAINT MH_FK_COUNTER_TYPE FOREIGN KEY (COUNTER_TYPE_ID) REFERENCES MH_COUNTER_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MH_COUNTER ADD CONSTRAINT MH_FK_COUNTER_TYPE FOREIGN KEY (COUNTER_TYPE_ID) REFERENCES MH_COUNTER_TYPE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
 ALTER TABLE MH_INTERVAL ADD CONSTRAINT MH_FK_INTERVAL_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MH_INTERVAL ADD CONSTRAINT MH_FK_INTERVAL_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE;
 +ALTER TABLE MH_LOGBOOK ADD CONSTRAINT MH_FK_LOGBOOK_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE;
 ALTER TABLE MH_MACH_STATE ADD CONSTRAINT MH_FK_MACHSTATE_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MH_MACH_STATE ADD CONSTRAINT MH_FK_MACHSTATE_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE;
 ALTER TABLE MH_STAT ADD CONSTRAINT MH_FK_STAT_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE MH_STAT ADD CONSTRAINT MH_FK_STAT_MACH FOREIGN KEY (MACH_ID) REFERENCES MH_MACH (ID) ON DELETE CASCADE ON UPDATE CASCADE;
Строка 166: Строка 216:
 CREATE INDEX MH_IX_COUNTER_MACHTYPE ON MH_COUNTER (MACH_ID, COUNTER_TYPE_ID);​ CREATE INDEX MH_IX_COUNTER_MACHTYPE ON MH_COUNTER (MACH_ID, COUNTER_TYPE_ID);​
 CREATE INDEX MH_IX_STAT_PERIOD ON MH_STAT (PERIOD); CREATE INDEX MH_IX_STAT_PERIOD ON MH_STAT (PERIOD);
 +
 +
 +/​******************************************************************************/​
 +/***                            Stored functions ​                           ***/
 +/​******************************************************************************/​
 +
 +
 +
 +SET TERM ^ ;
 +
 +ALTER FUNCTION MH_CNT_SEC (
 +    SEC INTEGER,
 +    DT TIMESTAMP,
 +    RUNNING SMALLINT,
 +    TIMER SMALLINT)
 +RETURNS INTEGER
 +AS
 +BEGIN
 +  IF (SEC = 2147483647) THEN
 +    RETURN SEC;
 +  RETURN ​ CAST(SEC + IIF(TIMER = 0, 1, -1) * IIF(RUNNING = 0, 0, (CURRENT_TIMESTAMP - DT) * 86400) AS INTEGER);
 +END^
 +
 +
 +
 +SET TERM ; ^
 +
  
 </​code>​ </​code>​
doc/jroboplc/modules/motohr_db.1740317266.txt.gz · Последние изменения: 2025/02/23 16:27 — denis
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0