동일한 표에 있는 다른 두 열의 연접 관계로 열을 업데이트하는 방법
저는 a, b, c 열이 3개 있는 테이블을 가지고 있습니다.각 행의 다른 두 열의 연결로 세 번째 열의 값을 업데이트하는 방법을 알고 싶습니다.
before update
A B c
-------------
1 4
2 5
3 6
after update
A B c
-------------
1 4 1_4
2 5 2_5
3 6 3_6
오라클에서는 어떻게 해야 합니까?
내용 연산자 사용||
:
update mytable set
c = a || '_' || b
행을 삽입하거나 업데이트할 때마다 이 작업을 다시 실행해야 하는 것을 방지하려면 다음과 같이 하십시오.
create view myview as
select *, a || '_' || b as c
from mytable
첫째, 당신은 정상화 규칙을 위반하고 있습니다.디자인에 대해 다시 생각해보셔야 합니다.표 열에 값이 있는 경우 계산된 값을 얻으려면 원하는 방식으로 결과를 가져오는 선택 문만 있으면 됩니다.계산된 값을 저장하는 것은 일반적으로 좋지 않은 아이디어이며 좋지 않은 설계로 간주됩니다.
어쨌든,
여러분이 있으니까.11g
, 정말로 계산된 열을 사용하고 싶다면 수동으로 열을 업데이트하는 것보다 가상 열을 사용하는 것이 좋습니다.UPDATE 문과 관련된 오버헤드가 많습니다.가상 컬럼을 사용하면 많은 오버헤드를 줄일 수 있습니다.또한 업데이트를 위해 수작업과 코드 라인을 완전히 제거할 수 있습니다.오라클이 당신을 위해 일을 합니다.
물론 virtual column 절에서 연결 조건을 동일하게 사용합니다.
뭐 그런 거.
Column_c varchar2(50) GENERATED ALWAYS AS (column_a||'_'||column_b) VIRTUAL
참고 : 사용에 일정한 제한이 있습니다.그러니 실행하기 전에 문서를 참고해주시기 바랍니다.그러나 OP에서 제공하는 단순한 사용 사례의 경우 가상 열이 곧게 들어맞습니다.
업데이트 작은 테스트를 했습니다.관찰은 거의 없었습니다.제 제안을 실행하는 방법에 대한 이해를 돕기 위해 이 질문을 읽어주시기 바랍니다.
언급URL : https://stackoverflow.com/questions/28542578/how-to-update-a-column-with-concatenate-of-two-other-column-in-a-same-table
'programing' 카테고리의 다른 글
자바스크립트 청취자, "키 누름"은 백스페이스를 감지하지 못합니까? (0) | 2023.10.27 |
---|---|
팬더를 사용하여 새 기둥에 증분 숫자를 추가하는 방법 (0) | 2023.10.27 |
jquery datable의 ajax call에서 매개변수를 게시하는 방법 (0) | 2023.10.27 |
mysql-client를 사용하여 따옴표 '를 mariaDB에 삽입하는 방법은? (0) | 2023.10.27 |
파이썬에 toString()과 동등한 기능이 있으며, 클래스를 String으로 변환할 수 있습니까? (0) | 2023.10.27 |