Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не работает каскадное удаление записей. / 7 сообщений из 7, страница 1 из 1
16.02.2011, 09:04
    #37118708
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Здравствуйте
Мне необходимо чтобы при удалении данных из одной таблицы у меня удалялись связанные по внешнему ключу данные из другой таблицы. Задача стандартная сразу нашел примеры в интернете. Сделал связь двух таблиц с правилом удаления ON DELETE CASCADE реляционного ограничения. НО пробую удалить данные в родительской таблице он удаляется а в связанной с ней таблице данные остаются без изменения.

Вот описания таблиц:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
CREATE TABLE DOCS.MAKETS
 (MAK_ID  INTEGER         NOT NULL  GENERATED BY DEFAULT
    AS IDENTITY (START WITH  1 , INCREMENT BY  1 , CACHE  5 , MINVALUE  1 , MAXVALUE  2147483647 , NO CYCLE, NO ORDER),
  MSG_ID  SMALLINT        NOT NULL,
  ID_DPL  CHARACTER( 3 )    NOT NULL,
  DDMM    CHARACTER( 4 )    NOT NULL,
  NUM_MAK CHARACTER( 3 )    NOT NULL
 )
  DATA CAPTURE NONE
  IN TSMAKETS
  PARTITIONING KEY
   (MAK_ID
   ) USING HASHING
  NOT LOGGED INITIALLY;

ALTER TABLE DOCS.MAKETS
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;

ALTER TABLE DOCS.MAKETS
  ADD CONSTRAINT XPK_MAKETS PRIMARY KEY
   (MAK_ID
   );


CREATE TABLE DOCS.MAKETS_REC
 (MAK_ID    INTEGER,
  REC_NUM   SMALLINT        NOT NULL,
  MM_NUM    SMALLINT        NOT NULL,
  BW_DT     CHARACTER( 6 )    NOT NULL,
  VT        CHARACTER( 1 )    NOT NULL,
  VD        CHARACTER( 2 )    NOT NULL,
  LOC_MOD1  CHARACTER( 3 )    NOT NULL,
  SEC_NUM1  CHARACTER( 8 )    NOT NULL,
  LMIN1     INTEGER         NOT NULL,
  LOC_MOD2  CHARACTER( 3 ),
  SEC_NUM2  CHARACTER( 8 ),
  LMIN2     INTEGER,
  LOC_MOD3  CHARACTER( 3 ),
  SEC_NUM3  CHARACTER( 8 ),
  LMIN3     INTEGER,
  LOC_MOD4  CHARACTER( 3 ),
  SEC_NUM4  CHARACTER( 8 ),
  LMIN4     INTEGER,
  LOC_MOD5  CHARACTER( 3 ),
  SEC_NUM5  CHARACTER( 8 ),
  LMIN5     INTEGER,
  ORL       INTEGER
 )
  DATA CAPTURE NONE
  IN TSMAKETS
  PARTITIONING KEY
   (MAK_ID
   ) USING HASHING
  NOT LOGGED INITIALLY;

ALTER TABLE DOCS.MAKETS_REC
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE;

ALTER TABLE DOCS.MAKETS_REC
  ADD CONSTRAINT R_1039 FOREIGN KEY
   (MAK_ID
   )
    REFERENCES DOCS.MAKETS
     (MAK_ID
     )
    ON DELETE CASCADE
    ENFORCED
    ENABLE QUERY OPTIMIZATION;

Вот запрос которым я пробую удалить записи:

Код: plaintext
delete from DOCS.MAKETS where MAK_ID= 1 ;

Что у меня не так?
...
Рейтинг: 0 / 0
16.02.2011, 10:05
    #37118859
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Azeke,

Вы хотите сказать, что после:
delete from DOCS.MAKETS where MAK_ID=1;
у вас:
select count(1) from DOCS.MAKETS_RECS where MAK_ID=1;
возвращает не 0?
Не могли бы вы тогда привести пример полностью, с заполнением данных?
...
Рейтинг: 0 / 0
16.02.2011, 11:03
    #37119048
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Данные в таблице DOC.MAKETS
...
Рейтинг: 0 / 0
16.02.2011, 11:06
    #37119055
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Данные в таблице DOC.MAKETS_REC
Остались данные с MAK_ID=1 хотя в таблице DOC.MAKETS их уже нет. После запроса на удаление.
...
Рейтинг: 0 / 0
16.02.2011, 11:06
    #37119058
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
...
Рейтинг: 0 / 0
16.02.2011, 11:24
    #37119132
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Azeke,

Что выдаёт:
Код: plaintext
1.
2.
3.
SELECT C.ENFORCED, T.CONST_CHECKED
FROM SYSCAT.TABCONST C
JOIN SYSCAT.TABLES T ON T.TABSCHEMA=C.TABSCHEMA AND T.TABNAME=C.TABNAME
WHERE C.CONSTNAME='R_1039' AND C.TABSCHEMA='DOCS' AND C.TABNAME='MAKETS_REC'
?
...
Рейтинг: 0 / 0
16.02.2011, 11:51
    #37119242
Azeke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает каскадное удаление записей.
Работает пересоздал таблицы ву базе.
Сейчас все нормально.
Спасибо за участие.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Не работает каскадное удаление записей. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]