23 янв. 2013 г.

Автоматическое добавление доменов в настройку

Запрос автоматом добавляет в указанную настройку все домены, которые используются полями таблиц, входящими в эту настройку:
INSERT INTO at_settingpos (
  settingkey,
  objectclass,
  category,
  objectname,
  xid,
  dbid,
  objectorder,
  withdetail,
  needmodify,
  autoadded
)

SELECT DISTINCT
  p.settingkey,
  'TgdcField',
  'Домен',
  f.FIELDNAME,
  fr.xid,
  fr.dbid,
  1, /* домены должны располагаться перед полями */
  0,
  1,
  0
FROM
  at_settingpos p
  JOIN gd_ruid pr
    ON pr.xid = p.xid
      AND pr.dbid = p.dbid
  JOIN at_relation_fields rf
    ON rf.id = pr.id
  JOIN at_fields f
    ON f.id = rf.FIELDSOURCEKEY
  JOIN gd_ruid fr
    ON fr.id = f.id
  LEFT JOIN at_settingpos p2
    ON p2.XID = fr.xid
      AND p2.DBID = fr.dbid
      /* если убрать это условие, то */
      /* исключим домены, которые    */
      /* входят хотя бы в одну настр.*/
      AND p2.settingkey = :SK
WHERE
  f.fieldname LIKE 'USR$%'
  AND
  p.settingkey = :SK
  AND
  p2.id IS NULL

Комментариев нет:

Отправить комментарий