09.12.2011 00:06
Все плавлюсь...
Какимто неведомым образом... появились дубли в SMspec.. но энто фигня..

1.move не прокатил...
2. отключил первичный ключ...
2.1 удалил дубли...
3. переименовал таблицу...
4. Создал скриптом заново таблицу...
5. перелил данные из переименованной...
вообщем все нормально кроме...

при сверке структуры
Отсутствует ограничение SMCSPECBY таблицы SMSPECBY
Отсутствует ограничение SMCSPECCASHCOMPOSITION_SPEC таблицы SMSPECCASHCOMPOSITION
Отсутствует ограничение SMCSPECCASHDISC_SPEC таблицы SMSPECCASHDISC
Отсутствует ограничение SMCSPECCASHSELLER_SPEC таблицы SMSPECCASHSELLER
Отсутствует ограничение SMCSPECCOMPINF_SPEC таблицы SMSPECCOMPINF
Отсутствует ограничение SMCSPECCO_SPECITEM таблицы SMSPECCO
Отсутствует ограничение SMCSPECIL таблицы SMSPECIL
Отсутствует ограничение SMCSPECIO таблицы SMSPECIO
Отсутствует ограничение SMCSPECPL_SPEC таблицы SMSPECPL
Отсутствует ограничение SMCSPECRL таблицы SMSPECRL
Отсутствует ограничение SMCSPECRLBASES_SPEC таблицы SMSPECRLBASES
Отсутствует ограничение SMCSPECSCALE_FK таблицы SMSPECSCALE
Отсутствует ограничение SMCSPECSERIALNUM таблицы SMSPECSERIALNUM
Отсутствует ограничение SMCSPECSR_FK таблицы SMSPECSR
Отсутствует ограничение SMCSPECSTAT таблицы SMSPECSTAT
Отсутствует ограничение SMCSPECTAX таблицы SMSPECTAX
Отсутствует ограничение SMDOCDISCCARDSPEC_SPEC таблицы SMDOCDISCCARDSPEC
Отсутствует ограничение SMSPECBI_FK таблицы SMSPECBI

ну думаю фигня вопрос.... беру первый попавшийся...
SMDOCDISCCARDSPEC_SPEC вынимаю toad скрипт создания... запускаю в SQL ...
и...
SQL> ALTER TABLE SUPERMAG.SMSPECCASHDISC ADD (
2 CONSTRAINT SMCSPECCASHDISC_SPEC
3 FOREIGN KEY (DOCTYPE, DOCID, SPECITEM)
4 REFERENCES SUPERMAG.
5 ON DELETE CASCADE);
ON DELETE CASCADE)
*
ошибка в строке 5:
ORA-00903: неверно имя таблицы

я дебил?... ладно понятно что дебил понять не могу где... и в скуле запускал и в тоаде... странно все энто...
есть идеи?
09.12.2011 02:08
забавно...
прогнал генератор БД....
болты...
разница с эталоном осталась...

делаю

SQL> select dbms_metadata.get_ddl('TABLE', 'SMSPECCASHDISC', 'SUPERMAG') from dual;

DBMS_METADATA.GET_DDL('TABLE','SMSPECCASHDISC','SUPERMAG')
--------------------------------------------------------------------------------

CREATE TABLE "SUPERMAG"."SMSPECCASHDISC"
( "DOCTYPE" CHAR(2) NOT NULL ENA


SQL> select dbms_metadata.get_ddl('CONSTRAINT', 'SLCSPECPACKS', 'SUPERMAG') from dual;
ERROR:
ORA-31603: объект "SLCSPECPACKS" с типом CONSTRAINT не найден в схеме
"SUPERMAG"
ORA-06512: на "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: на "SYS.DBMS_METADATA", line 653
ORA-06512: на "SYS.DBMS_METADATA", line 1260
ORA-06512: на line 1

причем это в базе где данный констрэйт точно есть и ищется по имени...
хм...
копаем дальше...
09.12.2011 08:03
В первом сообщении потерял имя таблицы в 4й строке (референс на что?)
По второму сообщению, скорее всего ограничение NOT NULL и вытаскивать его надо с описанием самой таблицы.
Очень похоже, что в этой базе поработал какой-то умелец, грохнув ограничения каскадом.
Поиск дублей в SMSPEC
Код:
select s.doctype,s.docid,s.specitem from supermag.smspec s, supermag.smspec s2
where s.doctype=s2.doctype and s.docid=s2.docid and s.specitem=s2.specitem and s.rowid!=s2.rowid
09.12.2011 10:42
Цитата:
OlegON В первом сообщении потерял имя таблицы в 4й строке (референс на что?)
По второму сообщению, скорее всего ограничение NOT NULL и вытаскивать его надо с описанием самой таблицы.
Очень похоже, что в этой базе поработал какой-то умелец, грохнув ограничения каскадом.
ну так я и поработал.. да грохнул я и именно каскадом..

проблема в том что это скрипт из тоада... и референс там такоей каой написал...\

может ктонить дать скрит на создание объекта у себя из базы...
09.12.2011 11:42
Цитата:
baggio может ктонить дать скрит на создание объекта у себя из базы...
тоже из ТОАДа

ALTER TABLE SUPERMAG.SMDOCDISCCARDSPEC ADD (
CONSTRAINT SMDOCDISCCARDSPEC_SPEC
FOREIGN KEY (DOCTYPE, DOCID, SPECITEM)
REFERENCES SUPERMAG.SMSPEC (DOCTYPE,DOCID,SPECITEM)
ON DELETE CASCADE);

правда ты версию не написал, но не думаю, что есть разница

Добавлено через 1 минуту 48 секунд
проверь, сработает, а думаю сработает, то надергаю тебе и для остальных таблиц
09.12.2011 13:20
Цитата:
ReDHawK тоже из ТОАДа

ALTER TABLE SUPERMAG.SMDOCDISCCARDSPEC ADD (
CONSTRAINT SMDOCDISCCARDSPEC_SPEC
FOREIGN KEY (DOCTYPE, DOCID, SPECITEM)
REFERENCES SUPERMAG.SMSPEC (DOCTYPE,DOCID,SPECITEM)
ON DELETE CASCADE);

правда ты версию не написал, но не думаю, что есть разница

Добавлено через 1 минуту 48 секунд
проверь, сработает, а думаю сработает, то надергаю тебе и для остальных таблиц
вот както так...
ТОка не понятно почему у меня тоад не дергал DDL полностью SQL navigator помог...

ALTER TABLE supermag.slspecpacks
ADD CONSTRAINT slcspecpacks FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smcalcspecout
ADD CONSTRAINT smccalcspecout_item FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smcontractpacks
ADD CONSTRAINT smccontractpacks_specitem FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smdepottasks
ADD CONSTRAINT smcdepottasks_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem);

ALTER TABLE supermag.smprodexpspec
ADD CONSTRAINT smcprodexpspec_item FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smprodretspec
ADD CONSTRAINT smcprodretspec_item FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smspecactsmeas
ADD CONSTRAINT smcspecactsmeas_item FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smspecad
ADD CONSTRAINT smcspecad_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;


ALTER TABLE supermag.smspecbi_disclog
ADD CONSTRAINT smcspecbi_disclog_discid FOREIGN KEY (discid)
REFERENCES SUPERMAG.smdiscpers (code)

ALTER TABLE supermag.smspecby
ADD CONSTRAINT smcspecby FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspeccashdisc
ADD CONSTRAINT smcspeccashdisc_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspeccashseller
ADD CONSTRAINT smcspeccashseller_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspeccompinf
ADD CONSTRAINT smcspeccompinf_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecco
ADD CONSTRAINT smcspecco_specitem FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecil
ADD CONSTRAINT smcspecil FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE


ALTER TABLE supermag.smspecio
ADD CONSTRAINT smcspecio FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecpl
ADD CONSTRAINT smcspecpl_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecrl
ADD CONSTRAINT smcspecrl FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecserialnum
ADD CONSTRAINT smcspecserialnum FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspecscale
ADD CONSTRAINT smcspecscale_fk FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE;

ALTER TABLE supermag.smspecsr
ADD CONSTRAINT smcspecsr_fk FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE

ALTER TABLE supermag.smspectax
ADD CONSTRAINT smcspectax FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE


ALTER TABLE supermag.smdocdisccardspec
ADD CONSTRAINT smdocdisccardspec_spec FOREIGN KEY (doctype, docid, specitem)
REFERENCES SUPERMAG.smspec (doctype,docid,specitem) ON DELETE CASCADE
Часовой пояс GMT +3, время: 22:11.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.