AT OBJECT

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «<syntaxhighlight lang="SQL"> CREATE TABLE at_object ( id dintkey, namespacekey dintkey, objectname dname, objectclass dclassname NOT…»)
 
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
 +
Позиция пространства имен.
 +
 
<syntaxhighlight lang="SQL">
 
<syntaxhighlight lang="SQL">
 
CREATE TABLE at_object (
 
CREATE TABLE at_object (
Строка 9: Строка 11:
 
   dbid            dinteger_notnull,
 
   dbid            dinteger_notnull,
 
   objectpos      dinteger,
 
   objectpos      dinteger,
   alwaysoverwrite dboolean_notnull DEFAULT 1,
+
   alwaysoverwrite dboolean_notnull DEFAULT 0,
 
   dontremove      dboolean_notnull DEFAULT 0,
 
   dontremove      dboolean_notnull DEFAULT 0,
 
   includesiblings dboolean_notnull DEFAULT 0,
 
   includesiblings dboolean_notnull DEFAULT 0,
 
   headobjectkey  dforeignkey,
 
   headobjectkey  dforeignkey,
 +
  modified        TIMESTAMP,
 +
  curr_modified  TIMESTAMP,
  
 
   CONSTRAINT at_pk_object PRIMARY KEY (id),
 
   CONSTRAINT at_pk_object PRIMARY KEY (id),
  CONSTRAINT at_uk_object UNIQUE (namespacekey, xid, dbid),
 
 
   CONSTRAINT at_fk_object_namespacekey FOREIGN KEY (namespacekey)
 
   CONSTRAINT at_fk_object_namespacekey FOREIGN KEY (namespacekey)
 
     REFERENCES at_namespace (id)
 
     REFERENCES at_namespace (id)
Строка 23: Строка 26:
 
     REFERENCES at_object (id)
 
     REFERENCES at_object (id)
 
     ON DELETE CASCADE
 
     ON DELETE CASCADE
     ON UPDATE CASCADE
+
     ON UPDATE CASCADE,
 +
  CONSTRAINT at_chk_object_hk CHECK (headobjectkey IS DISTINCT FROM id)
 
);
 
);
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
===Список зависимых объектов===
 +
 +
<syntaxhighlight lang="SQL">
 +
WITH RECURSIVE
 +
  group_tree AS (
 +
    SELECT id, headobjectkey, objectname, id AS root_id,
 +
      CAST('' AS VARCHAR(255)) AS indent
 +
    FROM at_object
 +
    WHERE headobjectkey IS NULL
 +
 +
    UNION ALL
 +
 +
    SELECT g.id, g.headobjectkey, g.objectname, h.root_id,
 +
      h.indent || rpad('', 4)
 +
    FROM at_object g JOIN group_tree h
 +
    ON g.headobjectkey = h.id
 +
)
 +
SELECT
 +
  gt.indent || gt.objectname
 +
FROM
 +
  group_tree gt
 +
WHERE
 +
  gt.root_id = :ID
 +
</syntaxhighlight>
 +
 +
====См. также====
 +
 +
* [[GdcNamespace.TgdcNamespaceObject|TgdcNamespaceObject]]
  
 
[[Category:База данных]]
 
[[Category:База данных]]

Текущая версия на 14:57, 26 декабря 2015

Позиция пространства имен.

CREATE TABLE at_object (
  id              dintkey,
  namespacekey    dintkey,
  objectname      dname,
  objectclass     dclassname NOT NULL,
  subtype         dtext60,
  xid             dinteger_notnull,
  dbid            dinteger_notnull,
  objectpos       dinteger,
  alwaysoverwrite dboolean_notnull DEFAULT 0,
  dontremove      dboolean_notnull DEFAULT 0,
  includesiblings dboolean_notnull DEFAULT 0,
  headobjectkey   dforeignkey,
  modified        TIMESTAMP,
  curr_modified   TIMESTAMP,
 
  CONSTRAINT at_pk_object PRIMARY KEY (id),
  CONSTRAINT at_fk_object_namespacekey FOREIGN KEY (namespacekey)
    REFERENCES at_namespace (id)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT at_fk_object_headobjectkey FOREIGN KEY (headobjectkey)
    REFERENCES at_object (id)
    ON DELETE CASCADE
    ON UPDATE CASCADE,
  CONSTRAINT at_chk_object_hk CHECK (headobjectkey IS DISTINCT FROM id)
);

[править] Список зависимых объектов

WITH RECURSIVE
  group_tree AS (
    SELECT id, headobjectkey, objectname, id AS root_id,
      CAST('' AS VARCHAR(255)) AS indent
    FROM at_object
    WHERE headobjectkey IS NULL
 
    UNION ALL
 
    SELECT g.id, g.headobjectkey, g.objectname, h.root_id,
      h.indent || rpad('', 4)
    FROM at_object g JOIN group_tree h
    ON g.headobjectkey = h.id
)
SELECT
  gt.indent || gt.objectname
FROM
  group_tree gt
WHERE
  gt.root_id = :ID

[править] См. также

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

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