обновить столбец и обновить другой столбец из обновленного столбца - PullRequest
0 голосов
/ 05 марта 2020

Это работоспособное решение?

BEGIN

 UPDATE my_table 
 SET my_column = my_value
 WHERE my_conditions,
       my_column2 = my_column --my_updated_column_value

COMMIT;
END;

Или как я могу обновить несколько столбцов с одинаковым значением?

Ответы [ 3 ]

0 голосов
/ 05 марта 2020

Это будет

update my_table 
  set my_column  = my_value,
      my_column2 = my_value      --> this
    where my_conditions;

Потому что, если вы установите его (как подсказывает один из ответов) на

my_column2 = my_column

, вы обновите MY_COLUMN2 до * Значение 1009 * old MY_COLUMN. Посмотрите:

SQL> create table test
  2  (my_column number,
  3   my_column2 number
  4  );

Table created.

SQL> insert into test values (100, 200);

1 row created.

SQL> update test set 
  2    my_column = 300,           --> "300" represents "MY_VALUE"
  3    my_column2 = my_column;    --> it won't be set to 300, but to 100

1 row updated.

SQL> select * from test;

 MY_COLUMN MY_COLUMN2
---------- ----------
       300        100

SQL>
0 голосов
/ 05 марта 2020

Вы можете напрямую обновить 2 поля в одном утверждении. Вот пример.

drop table TAB1\\

create table TAB1  
(Col1 CHAR(1), 
 COl2 CHAR(1)
)\\



INSERT INTO TAB1 VALUES ( 'A' , 'B' ) \\
INSERT INTO TAB1 VALUES ( 'C' , 'D' ) \\

select * from TAB1\\

UPDATE TAB1  
SET 
COL1 = 'E',
COL2 = 'E'
WHERE COL1 = 'A' \\

SELECT * FROM TAB1\\

Результат

    COL1    COL2
1   A   B
2   C   D

    COL1    COL2
1   E   E
2   C   D

Демо

0 голосов
/ 05 марта 2020

Просто поместите обновления в часть "set" оператора

begin
 update my_table 
    set my_column   = my_value
       ,my_column2 = my_column --my_updated_column_value
  where my_conditions
commit;
end;
...