powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Child record found
27 сообщений из 27, показаны все 2 страниц
Child record found
    #39663953
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здаствуйте ,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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


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


FK
dba_constraints


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

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

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

Если уж не можешь по-нормальному через dbms_metadata.get_ddl привести DDL обоих таблиц со всеми констрэйнтами
...
Рейтинг: 0 / 0
Child record found
    #39664020
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров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
Child record found
    #39664023
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maverick2104старше 90 днейЕсли у тебя сейчас не полночь, то trunc
...
Рейтинг: 0 / 0
Child record found
    #39664024
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нихрена не понял -- а кто сказал, что TIME_CREATED для конкретного ID одинаков в обоих таблицах ?
...
Рейтинг: 0 / 0
Child record found
    #39664025
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши запрос со связью этих таблиц, может и увидишь неудаленные дочки.
...
Рейтинг: 0 / 0
Child record found
    #39664037
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Child record found
    #39664052
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровНихрена не понял -- а кто сказал, что TIME_CREATED для конкретного ID одинаков в обоих таблицах ?

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


Разница во времени есть .
...
Рейтинг: 0 / 0
Child record found
    #39664058
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Child record found
    #39664084
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Child record found
    #39664087
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Самая раняя запись в таблице дочке :

Дочь


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

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

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

Я думал разрывы time_create между ид дочкой и родителя не велики (1-2 секунды ) , а они оказываются в некоторых случаях достигают и 1-2 мясяца ......
...
Рейтинг: 0 / 0
Child record found
    #39664165
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иногда достаточно и одной секунды, если ты еще не понял
...
Рейтинг: 0 / 0
Child record found
    #39664173
maverick2104
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Вот она моя проблема . В дочке удалял все до 25 марта а в родители пытался удалять все до 24 марта , но есть несколько записей в дочке на апрель,май и тд которые связаны с мартам на родители ( которые естественно не будут удалятся ).
...
Рейтинг: 0 / 0
Child record found
    #39664177
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровИногда достаточно и одной секунды, если ты еще не понял
Иногда достаточно одной секунды между этими двумя delete, даже если TIME_CREATED всегда совпадают :)
Еще иногда достаточно иметь приятеля в соседней комнате, который вставит запись и пойдет курить.
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Child record found
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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