powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дублирование новых записей из одной таблицы в другую.
10 сообщений из 10, страница 1 из 1
Дублирование новых записей из одной таблицы в другую.
    #39582291
Добрый день!
Начал изучать Oracle, никак не могу продублировать новые записи.
К примеру:
в табл1 постоянно добавляются новые записи, нужно именно эти новые переносить во вторую таблицу.

create or replace procedure SMS_GATE is
begin
FOR rec1 IN (SELECT * FROM table2 where SUBSTR(timesend,1,8) = TO_CHAR(SYSDATE, 'YYYYMMDD')) LOOP --ежедневные записи
FOR rec2 IN (select * from table1) LOOP --таблица с новыми записями
if(rec2.text != rec1.text) then
insert into table1(id, phone, text, timesend)
values('', rec1.phone, rec1.text, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'));
end if;
END LOOP;
END LOOP;
COMMIT;
end SMS_GATE;

Первый раз отрабатывает, а потом начинает записи приумножать и все равно старые insertит
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582299
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубовицкий,
не проще ли использовать триггер...
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582308
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубовицкий,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace trigger trg_name
  before insert on table1
  for each row
begin
  insert into table2
    (id,
     phone,
     text,
     timesend)
  values
    ('',
     :new.phone,
     :new.text,
     :new.timesend);
end;
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582309
Дубовицкий,

почитай про MERGE.

Но лучше - опиши полностью решаемую задачу. А то может изобретаешь кривой велосипед...
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582311
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубовицкийrec2.text != rec1.textcartesian anti-join у тебя и "первый раз" строки размножает, а последующие в геометрической прогрессии
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582313
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхпочитай про MERGE.Для инсерта проще использовать insert.
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582331
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубовицкий, еще вариант:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create or replace procedure SMS_GATE is
begin
  for rec1 in (select *
                 from table2 t2
                where to_date(t2.timesend, 'YYYYMMDDHH24MISS') > (select max(to_date(t1.timesend, 'YYYYMMDDHH24MISS')) from table1 t1)) --получаем все новые записи, которых нет в table1
  loop
    insert into table1
      (id,
       phone,
       text,
       timesend)
    values
      ('',
       rec1.phone,
       rec1.text,
       TO_CHAR(sysdate, 'YYYYMMDDHH24MISS'));
  end loop;
  commit;
end SMS_GATE;
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582354
-2-,

пусть тогда инсертит минусовку....
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582659
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
insert all?
...
Рейтинг: 0 / 0
Дублирование новых записей из одной таблицы в другую.
    #39582762
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дубовицкий
Код: plsql
1.
where SUBSTR(timesend,1,8) = TO_CHAR(SYSDATE, 'YYYYMMDD')) LOOP --ежедневные записи

т.е. данные ночные пропадут
или выполняешь каждую секунду?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Дублирование новых записей из одной таблицы в другую.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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