AT OBJECT
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: «<syntaxhighlight lang="SQL"> CREATE TABLE at_object ( id dintkey, namespacekey dintkey, objectname dname, objectclass dclassname NOT…») |
SYSDBA (обсуждение | вклад) |
||
| (не показаны 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 | + | 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_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