Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте всем! DB2 8.2, fp16 В одной из дочерних таблиц дублируется поле FLD из родительской таблицы. Как сделать, чтобы при добавлении и изменении дочерней записи в FLD всегда вносилось значение FLD родителя? С уважением, Семен Попов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2010, 15:42 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Триггеры after. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2010, 20:42 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
FireCatТриггеры after.А не before? Например, родительская таблица PRNTTAB (PRNTID, SAMEFLD,...) и дочерняя CHLDTAB (CHLDID, PRNTID, SAMEFLD, ...). Тогда триггер before на дочернюю будет выглядеть примерно так: Код: plaintext 1. 2. 3. 4. 5. А вообще, без триггера можно обойтись? Например, в дочерней таблице объявить поле SAMEFLD как generated always: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 08:54 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Добрый день. Semen PopovА вообще, без триггера можно обойтись? Например, в дочерней таблице объявить поле SAMEFLD как generated always: Код: plaintext 1. 2. 3. 4. 5. 6. дока GENERATED ALWAYS AS (generation-expression) Specifies that the definition of the column is based on an expression. (If the expression for a GENERATED ALWAYS column includes a user-defined external function, changing the executable for the function (such that the results change for given arguments) can result in inconsistent data. This can be avoided by using the SET INTEGRITY statement to force the generation of new values.) The generation-expression cannot contain any of the following (SQLSTATE 42621): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 09:33 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinТак не получится.Понял. Спасибо. Mark BarinsteinРади интереса: а в чём причина такой денормализации у вас?Это мне нужно для реализации ограничения уникальности в дочерней таблице CHLDTAB (CHLDID, PRNTID, SAMEFLD, INPUTNUM ...) - constraint CHLD_UNK unique (SAMEFLD,INPUTNUM). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 10:23 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
А если мне нужно в две переменные одним запросом вытащить? Что-то не получается. Скрипт Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 10:44 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Semen PopovЭто мне нужно для реализации ограничения уникальности в дочерней таблице CHLDTAB (CHLDID, PRNTID, SAMEFLD, INPUTNUM ...) - constraint CHLD_UNK unique (SAMEFLD,INPUTNUM).Почему нельзя вместо SAMEFLD использовать PRNTID для этого? Для триггера: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 11:03 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Как workaround: создать вьюшку. На вьюшку повесить триггер INSTEAD OF. А там реализовать какую угодно логику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 11:24 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinПочему нельзя вместо SAMEFLD использовать PRNTID для этого?Потому что PRNTID однозначно не определяет SAMEFLD. По одному значению SAMEFLD может быть много записей как в родительской так и в дочерней таблицах. Но в обоих таблицах поля SAMEFLD участвуют в ограничении уникальности. Например, реализация журнала регистрации (таблица-родитель) и обработки документов (дочерняя таблица) по подразделениям организации. На одну запись регистрации по технологии может быть несколько обработок. В журнале регистрации поле "Номер регистрации" (INPUTNUM) не должно повторяться в пределах подразделения (поле DEPID) - unique (DEPID,INPUTNUM). Аналогично в журнале обработки поле "Номер обработки" (PRCSNUM) не должно повторяться в пределах подразделения (поле DEPID) - unique (DEPID,PRCSNUM). Но обработка документа всегда производится в подразделении, где он был зарегистрирован. Поэтому в дочерней всегда инициализирую DEPID родителя. Mark BarinsteinДля триггера: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 11:45 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
gardenmanКак workaround: создать вьюшку. На вьюшку повесить триггер INSTEAD OF. А там реализовать какую угодно логику.Спасибо. Подумаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 11:46 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
gardenmanКак workaround: создать вьюшку. На вьюшку повесить триггер INSTEAD OF. А там реализовать какую угодно логику.Кстати, это Вы наверно к моей недавней теме сказали - об организации взаимодействия справочников и рабочих данных? Интересное решение. Чем плодить триггеры в рабочих таблицах и справочниках можно было бы создать вьюху и в ней триггер, отслеживающий логику и целостность данных. Спасибо. А триггер INSTEAD OF будет отрабатывать, если я буду проводить операции только с одной таблицой из вьюхи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 12:03 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Semen PopovА триггер INSTEAD OF будет отрабатывать, если я буду проводить операции только с одной таблицой из вьюхи?Наприемр, MyView - это вьюха, склеивающая (join) таблицы NSITAB и WRKTAB. В MyView создать триггер MV_TRIGGER (INSTEAD OF). Будет ли работать MV_TRIGGER, если, например удалить запись из NSITAB (delete from NSITAB where NSICOD=1)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 12:22 |
|
||
|
Одинаковые поля родительской и дочерней таблицы
|
|||
|---|---|---|---|
|
#18+
Semen PopovНаприемр, MyView - это вьюха, склеивающая (join) таблицы NSITAB и WRKTAB. В MyView создать триггер MV_TRIGGER (INSTEAD OF). Будет ли работать MV_TRIGGER, если, например удалить запись из NSITAB (delete from NSITAB where NSICOD=1)?INSTEAD OF триггеры будут работать только если вы будете делать insert / update / delete в MyView, а не в таблицах, на которых вью стоит. В вашем случае для инициализации DEPID при вставке в дочернюю вполне подойдёт before insert на неё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2010, 12:34 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36982871&tid=1602482]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 296ms |

| 0 / 0 |
