Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Дубль записи..  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
Доброго времени уважаемые!
Собственно вопрос - можно ли выбрать строку в таблице со всеми столбцами за исключением первичного ключа?
Или как это можно сделать наименьшими усилиями?
Нужно чтобы создавать копии записей с новым ID
1 ноя 11, 13:41    [11532645]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
ded-mazay,

А что, тяжело поля перечислить, руки болят?
1 ноя 11, 13:54    [11532771]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
да, копировать надо в нескольких таблицах, в основной 42 поля на данный момент..
1 ноя 11, 13:56    [11532793]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Elic
Member

Откуда:
Сообщений: 29976
ded-mazay
Нужно чтобы создавать копии записей с новым ID
[table of] %rowtype
1 ноя 11, 13:57    [11532802]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
user_columns - (user_constraint - PK)
1 ноя 11, 13:58    [11532816]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
ded-mazay,

1) table of %rowtype
2) bulk collect
3) nextval
4) forall insert
1 ноя 11, 14:00    [11532829]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
ded-mazay
Member

Откуда:
Сообщений: 260
Ладно, переберу руками 1-ю таблицу типа:
select id_seq.nextval, col1, col2,... into new_id, val1, val2,... from MyTable where id = old_id..
далее смотрим REFERENCES таблицы:
select
c2.table_name
from dba_constraints c1, dba_cons_columns c2
where
c1.owner = 'SchemeOwner'
and c2.owner = 'SchemeOwner'
and c1.constraint_name = c2.constraint_name
and c1.r_constraint_name in (select b.constraint_name from dba_constraints b where b.owner = 'SchemeOwner' and b.table_name = 'MyTable')
можно как-то в рамках ф-ции перебрать полученные имена таблиц и если есть записи втавить новые с полученным новым ID?
1 ноя 11, 15:05    [11533494]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Vint
Member

Откуда: Москва
Сообщений: 4564
ded-mazay,
мда.... компанию не подскажете?) а то буквально неделю назад реализовал))
user_table+user_constraint формируем запрос (dbms_sql+merge)
1 ноя 11, 15:34    [11533799]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Jack123
Member

Откуда: Таган-Йорк-Москва
Сообщений: 85
По словам Vint:

select distinct 
       ut.table_name, 
       uc_2.table_name ref_table
  from user_tables ut
  join user_constraints uc_1 on uc_1.table_name = ut.table_name
  join user_constraints uc_2 on uc_2.constraint_name =
                                uc_1.r_constraint_name

ded-mazay, мой самый наименее затратный метод выбора колонок - это в PL/SQL Developer через правую кнопку на папке Columns выбрать опцию Copy comma seperated.:)
1 ноя 11, 17:18    [11534634]     Ответить | Цитировать Сообщить модератору
 Re: Дубль записи..  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
сдается мне включать на время вставки триггер на генерацию id слегка проще. :)
1 ноя 11, 17:58    [11534972]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить