データベース スクリプトを使用したオブジェクトおよびオブジェクト タイプ属性の検索

オブジェクトやオブジェクト タイプ属性を検索するときに、データベース スクリプトを使用できます。これが役に立ついくつかの例を示します。

複数の同じ値

常に不正なオブジェクト属性値に対して、複数の値 (同じ値) を持つすべてのオブジェクト属性値を検索します。

PostgreSQL
SELECT
  O."ID",
  OTA."NAME",
  OA."ID",
  OA."OBJECT_TYPE_ATTRIBUTE_ID",
  OA."OBJECT_ID",
  count(OAV."ID"),
  OAV."TEXT_VALUE",
  OAV."INTEGER_VALUE",
  OAV."BOOLEAN_VALUE",
  OAV."DATE_VALUE",
  OAV."REFERENCED_OBJECT_ID"
FROM "AO_8542F1_IFJ_OBJ" O
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON O."ID" = OA."OBJECT_ID"
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_ATTR_VAL" OAV ON OA."ID" = OAV."OBJECT_ATTRIBUTE_ID"
GROUP BY O."ID", OTA."NAME", OA."ID", OA."OBJECT_TYPE_ATTRIBUTE_ID", OA."OBJECT_ID", OAV."TEXT_VALUE",
  OAV."INTEGER_VALUE", OAV."BOOLEAN_VALUE", OAV."DATE_VALUE", OAV."REFERENCED_OBJECT_ID"
HAVING count(OAV."ID") > 1; 

最大カーディナリティ違反 (オブジェクトの検索)

Find all objects that have one or more values that violate the maximum constraint for at least one object type attribute configured for the object. This might be a fine result since decreasing the maximum cardinality without changing the objects in Assets will cause this to be the expected behavior.

PostgreSQL
SELECT
  O."ID",
  O."OBJECT_KEY",
  O."LABEL"
FROM "AO_8542F1_IFJ_OBJ" O
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_ATTR" OA ON O."ID" = OA."OBJECT_ID"
WHERE OA."ID" IN (SELECT OA."ID"
                  FROM "AO_8542F1_IFJ_OBJ_ATTR" OA
                    LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
                    LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_ATTR_VAL" OAV ON OA."ID" = OAV."OBJECT_ATTRIBUTE_ID"
                  WHERE OTA."MAXIMUM_CARDINALITY" != -1
                  GROUP BY OTA."ID", OA."ID"
                  HAVING count(*) > OTA."MAXIMUM_CARDINALITY");

最大カーディナリティ違反 (オブジェクト タイプ属性の検索)

カーディナリティによって指定される値よりも多くの値を持つオブジェクト タイプ属性をすべて検索します。すべてのオブジェクトを更新しないで最大カーディナリティを変更した場合、これは問題にならない可能性があります。

PostgreSQL
SELECT
  OTA."ID",
  OA."ID",
  count(*)
FROM "AO_8542F1_IFJ_OBJ_ATTR" OA
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_TYPE_ATTR" OTA ON OTA."ID" = OA."OBJECT_TYPE_ATTRIBUTE_ID"
  LEFT OUTER JOIN "AO_8542F1_IFJ_OBJ_ATTR_VAL" OAV ON OA."ID" = OAV."OBJECT_ATTRIBUTE_ID"
WHERE OTA."MAXIMUM_CARDINALITY" != -1
GROUP BY OTA."ID", OA."ID"
HAVING count(*) > OTA."MAXIMUM_CARDINALITY";
最終更新日 2022 年 9 月 26 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.