2013-05-13 5 views
1

Нужна помощь по запросу Oracle. В основном я хотел бы собрать запрос, который обновляет несколько столбцов, чтобы заменить фактические данные тестовыми данными. Для этого нам нужно сделать такие вещи, как коды проекта изменений в двух таблицах, но эти ссылки должны соответствовать, так, например, я ищу, чтобы сделать ...Oracle обновляет несколько столбцов в нескольких таблицах

UPDATE table1 t1, table2 t2 
SET t1.project_ref = concat('projectRef-',rownum), 
    t2.project_ref = t1.project_ref 
WHERE t1.project_ref = t2.project_ref and t1.project_client = XYZ 

Это изменило бы t1.project_ref и t2. project_ref для чего-то вроде «projectRef-1» для клиента XYZ.

Любые идеи?

С уважением

KS

+2

: Вам нужно два различных утверждения обновления для этой –

+0

Хммм, будет неудобно, если у меня есть 1279 проектов ссылки на номера, я обновить в одной таблице, а затем пройти и сделать это во втором. Как я узнаю, к чему относится. Вид надежды Oracle мог бы сделать что-то умное здесь (он стоит достаточно, я бы хотел, чтобы он заработал гонорары: -D) – Casper

ответ

2

Я боюсь, что вы будете иметь, чтобы построить таблицу перевода. Что-то вроде:

project_test_data 
----------------- 
real_project_ref varchar2(30) 
test_project_ref varchar2(30) 

Затем напишите инструкции по обновлению, заменив тестовую версию для реальной версии в соответствующих таблицах.

Обратите внимание, что если вы определили отношения внешних ключей в этих столбцах, вам необходимо отключить их или, по крайней мере, сделать их отложенными и отложенными. Это одна из причин избежать использования значимых данных в качестве первичных ключей.

4

Как правило, обновления для соединений возможны в Oracle.

Это синтаксис: обновления (выберите T1 * от T1, T2, где ...) Множества ...

Они требуют условия соединения между Т1 и Т2, а также уникальным индексом на столбце соединения в T2, чтобы гарантировать, что выбор возвращает не более одного столбца в строке в T1. К сожалению, для вас существует еще одно ограничение, в котором говорится, что можно обновлять только столбцы в одной из таблиц (здесь T1).

Поэтому вам нужна промежуточная таблица, в которую вы вставляете набор изменений project_ref в new-project_ref, а затем используйте эту таблицу для обновления T1 и T2 отдельно.

+0

отличное решение спасибо – user206168

0

http://www.club-oracle.com/threads/updating-two-tables-in-single-query.6026/

эта ссылка развернутый ответ на ваш вопрос Приведи его один раз :)

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответьте здесь и укажите ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – Tristan

Смежные вопросы