Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Child record found / 25 сообщений из 27, страница 1 из 2
22.06.2018, 09:50
    #39663953
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Здаствуйте ,

Имеем 2 таблицы А и Б .

Таблица Б дочерняя по столбцу ID . (On DELETE CASCADE не включен )

Задача : Удалить несколько строк из обеих таблиц по признаку ID < XXX

Мой порядок действии :

Удаляю нужные записи из таблицы Б >>>> OK!
Удаляю нужные записи из таблицы А >>>> Error, integrity constraint ( constraint_name) violated - child record found .

Проверяю , все строки удаленны и таблица А свободна . Подскажите пожалуйста в чем проблема . Как мне удалить записи из таблицы А ?
...
Рейтинг: 0 / 0
22.06.2018, 10:00
    #39663957
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104,

Официальный язык форума - SQL.
...
Рейтинг: 0 / 0
22.06.2018, 10:03
    #39663958
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
автор все строки удаленны и таблица А свободна
Это как???
...
Рейтинг: 0 / 0
22.06.2018, 10:03
    #39663959
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
-2-maverick2104,

Официальный язык форума - SQL.

Это вы к чему ? Если нечего сказать пропустите ход пожалуйста .
...
Рейтинг: 0 / 0
22.06.2018, 10:04
    #39663963
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
tru55автор все строки удаленны и таблица А свободна
Это как???

Я иммею ввиду что нету привязки по записям так как из таблицы Б они удаленны.
...
Рейтинг: 0 / 0
22.06.2018, 10:07
    #39663967
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104Я иммею ввиду что нету привязки по записям так как из таблицы Б они удаленны.
Чудес на свете не бывает. Если возникла ошибка, значит хотя бы одна дочерняя строка осталась.

Кстати, при ошибке выдается наименование constraint. Неплохо бы на него посмотреть, поскольку могут быть и другие FK.

Еще вариант - если ты удалил дочерние строки в одной сессии и без COMMIT пытаешься удалить родительские строки в другой сессии.
...
Рейтинг: 0 / 0
22.06.2018, 10:07
    #39663968
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104Это вы к чему ?Мы не верим твоему эпистолярному языку. Потрудись http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
22.06.2018, 10:15
    #39663980
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
tru55,

Посмотрел в dba_constraints , FK только один.

В том то и дело что записей не осталось.
...
Рейтинг: 0 / 0
22.06.2018, 10:20
    #39663983
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104-2-maverick2104,

Официальный язык форума - SQL.

Это вы к чему ? Если нечего сказать пропустите ход пожалуйста .Это к тому что неплохо бы предоставить testcase
На языке SQL -- с командами и сообщениями об ошибках
...
Рейтинг: 0 / 0
22.06.2018, 10:25
    #39663989
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104,

как вариант наложены полики, и Вы записи не видете

зы
я б
1)пределился с одним ид на котором слетает и добивал
все делаем в одной сессии

2) возможны неточности напр в Б удаляем по <, а в А по <=

3) так уже гоаорили, child record found в другой табличке (не Б)

.....
stax
...
Рейтинг: 0 / 0
22.06.2018, 10:40
    #39664003
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Вячеслав Любомудровmaverick2104пропущено...


Это вы к чему ? Если нечего сказать пропустите ход пожалуйста .Это к тому что неплохо бы предоставить testcase
На языке SQL -- с командами и сообщениями об ошибках

Таблица А с данными старше 90 дней
Таблица А


Таблица Б ( данные удаленны )
Таблица Б


Ошибка при удаление из родителя.
Ошибка


FK
dba_constraints


Кстати , только заметил , если попробовать удалять данные по другому критерию ( не по time_created ) то все проходит нормально .

Но мне нужно имеено это , так как запрос будет стоять в джобе .
...
Рейтинг: 0 / 0
22.06.2018, 10:43
    #39664009
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104FK
dba_constraints

Ты все показывай

Если уж не можешь по-нормальному через dbms_metadata.get_ddl привести DDL обоих таблиц со всеми констрэйнтами
...
Рейтинг: 0 / 0
22.06.2018, 10:50
    #39664020
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Вячеслав Любомудровmaverick2104FK
dba_constraints

Ты все показывай

Если уж не можешь по-нормальному через dbms_metadata.get_ddl привести DDL обоих таблиц со всеми констрэйнтами

Дочка
Код: plsql
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.
CREATE TABLE "ELECTRON_EXTR"."ZIPPED_IN_EMAIL" 
   (	"ID" NUMBER(19,0) NOT NULL ENABLE, 
	"TIME_CREATED" TIMESTAMP (6), 
	"VERSION" NUMBER(10,0) NOT NULL ENABLE, 
	"EMAIL_SENT_ID" NUMBER(19,0), 
	"ZIPPED_FILE_ID" NUMBER(19,0), 
	 PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE, 
	 CONSTRAINT "FK5C0AFAD3C7EC047" FOREIGN KEY ("ZIPPED_FILE_ID")
	  REFERENCES "ELECTRON_EXTR"."ZIPPED_STATEMENTS" ("ID") ENABLE, 
	 CONSTRAINT "FK5C0AFAD376E400A2" FOREIGN KEY ("EMAIL_SENT_ID")
	  REFERENCES "ELECTRON_EXTR"."EMAIL_STATUS" ("ID") ENABLE
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE ROW MOVEMENT ;
  CREATE UNIQUE INDEX "ELECTRON_EXTR"."SYS_C0020705" ON "ELECTRON_EXTR"."ZIPPED_IN_EMAIL" ("ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_IN_EMAIL" MODIFY ("VERSION" NOT NULL ENABLE);
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_IN_EMAIL" ADD PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE;
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_IN_EMAIL" MODIFY ("ID" NOT NULL ENABLE);



Родитель
Код: plsql
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.
CREATE TABLE "ELECTRON_EXTR"."ZIPPED_STATEMENTS" 
   (	"ID" NUMBER(19,0) NOT NULL ENABLE, 
	"FILE_CONTENT" BLOB, 
	"FILE_NAME" VARCHAR2(100 CHAR), 
	"TIME_CREATED" TIMESTAMP (6), 
	"VERSION" NUMBER(10,0) NOT NULL ENABLE, 
	"GENERATED_STATEMENT_ID" NUMBER(19,0), 
	 PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE, 
	 CONSTRAINT "FK65F1037599A72823" FOREIGN KEY ("GENERATED_STATEMENT_ID")
	  REFERENCES "ELECTRON_EXTR"."GENERATED_STATEMENTS" ("ID") ENABLE
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" 
 LOB ("FILE_CONTENT") STORE AS BASICFILE "SYS_IL0000102384C00002$$"(
  TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION 
  NOCACHE LOGGING 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))  ENABLE ROW MOVEMENT ;
  CREATE UNIQUE INDEX "ELECTRON_EXTR"."SYS_C0020677" ON "ELECTRON_EXTR"."ZIPPED_STATEMENTS" ("ID") 
  PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" ;
  CREATE UNIQUE INDEX "ELECTRON_EXTR"."SYS_IL0000102384C00002$$" ON "ELECTRON_EXTR"."ZIPPED_STATEMENTS" (
  PCTFREE 10 INITRANS 2 MAXTRANS 255 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS" 
  PARALLEL (DEGREE 0 INSTANCES 0) ;
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_STATEMENTS" MODIFY ("VERSION" NOT NULL ENABLE);
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_STATEMENTS" ADD PRIMARY KEY ("ID")
  USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "USERS"  ENABLE;
  ALTER TABLE "ELECTRON_EXTR"."ZIPPED_STATEMENTS" MODIFY ("ID" NOT NULL ENABLE);



dba_constraints
...
Рейтинг: 0 / 0
22.06.2018, 10:54
    #39664023
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104старше 90 днейЕсли у тебя сейчас не полночь, то trunc
...
Рейтинг: 0 / 0
22.06.2018, 10:55
    #39664024
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Нихрена не понял -- а кто сказал, что TIME_CREATED для конкретного ID одинаков в обоих таблицах ?
...
Рейтинг: 0 / 0
22.06.2018, 10:55
    #39664025
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Напиши запрос со связью этих таблиц, может и увидишь неудаленные дочки.
...
Рейтинг: 0 / 0
22.06.2018, 11:07
    #39664037
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
tru55,

Вы удаляете по дате (старше), а констраинт не по дате

CONSTRAINT "FK5C0AFAD3C7EC047" FOREIGN KEY ("ZIPPED_FILE_ID")
REFERENCES "ELECTRON_EXTR"."ZIPPED_STATEMENTS" ("ID") ENABLE,

CONSTRAINT "FK5C0AFAD376E400A2" FOREIGN KEY ("EMAIL_SENT_ID")
REFERENCES "ELECTRON_EXTR"."EMAIL_STATUS" ("ID") ENABLE

оно и правильно слетает (могло случайно не слетать)

проверить
select id from A a where dat<sysdate-90 and exists (select 1 from B b where b.dat<sysdate-90 and b.id=a.id)

.....
stax
...
Рейтинг: 0 / 0
22.06.2018, 11:15
    #39664052
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Вячеслав ЛюбомудровНихрена не понял -- а кто сказал, что TIME_CREATED для конкретного ID одинаков в обоих таблицах ?

Никто и не говорил , написал запрос :


Разница во времени есть .
...
Рейтинг: 0 / 0
22.06.2018, 11:20
    #39664058
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Staxtru55,


проверить
select id from A a where dat<sysdate-90 and exists (select 1 from B b where b.dat<sysdate-90 and b.id=a.id)

.....
stax

Проверил , вывод NULL
...
Рейтинг: 0 / 0
22.06.2018, 11:46
    #39664084
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104Проверил , вывод NULL

не верю

Вы удаляете по условию sysdate-90, ето разные условия для таблиц А и Б

удаляйте to_date(xxxx,'pppp')-90 (или trunc(sysdate)-90), но ето всеравно імхо неправильно,
id и даты могут быть не синхронизованы

в "монопольном" режиме я б
1) insert into tmp select id from а where dat<trunc(sysdate)-90 (или bulk в массив)
2) delete b where id in (select id from tmp) --опасно можно удалить лишнее, но ...
3) delete a where id in (select id from tmp)

смотреть, мож у Вас есть несколько ид в Б с разными датами разнесеныыми боле 90дней

ps
CASCADE тем и удобен чтоб избежать child record found .

.....
stax
...
Рейтинг: 0 / 0
22.06.2018, 11:47
    #39664087
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Самая раняя запись в таблице дочке :

Дочь


Самая крайняя запись которую пытаюсь удалить :

Род
...
Рейтинг: 0 / 0
22.06.2018, 11:51
    #39664088
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Т.е. голова так и не включается?
Бывает, че
...
Рейтинг: 0 / 0
22.06.2018, 11:56
    #39664094
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
maverick2104Разница во времени есть .
и Вы удивляетесь child record found,
Вы ж удаляете записи с разными ИД (фк-пк)

.....
stax
...
Рейтинг: 0 / 0
22.06.2018, 12:52
    #39664161
maverick2104
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Вячеслав ЛюбомудровТ.е. голова так и не включается?
Бывает, че

Я думал разрывы time_create между ид дочкой и родителя не велики (1-2 секунды ) , а они оказываются в некоторых случаях достигают и 1-2 мясяца ......
...
Рейтинг: 0 / 0
22.06.2018, 12:57
    #39664165
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Child record found
Иногда достаточно и одной секунды, если ты еще не понял
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Child record found / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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