2017-09-11 2 views
0

나는 이것이 가능하거나 그것이 의미가 있다고 생각하지 않지만, 여기에있는 대부분의 사람들은 내게 훨씬 더 똑똑하고 결코 물어 보지 않는다. 수식 인 데이터베이스에 테이블을 만들 수 있습니까? 나는 질의를 의미하지는 않습니다. 나는 테이블이 있고 열 중 하나가 "가격"이고 다른 하나는 "수량"이고 가격 (수량)을 계산하기위한 열 "비용"을 원한다는 것을 의미합니다. 데이터가 가져올 때. 그럼 나중에 할 수 있습니다 :수식/데이터베이스 테이블의 계산 열

select * from table;

이것이 바보 같은 질문이라면 이해 하겠지만 내부 고객이 알아서 조사해야합니다. 실행중인 DB는 BlueMix상의 DB2입니다.

답변

3

또는 다음과 같이 트리거를 만들 수 있습니다.

db2 create trigger trigger_name after insert on table_name 
for each row mode db2sql begin atomic update tablle_name 
set cost=qty*price; end 
+0

감사합니다. 나는 당신이 나에게이 질문을하기조차도 어리 석다는 것을 말하기를 바랬다. .....하지만 이제 나는 이것을해야한다 :/고마워. –

1

트리거를 사용해보십시오. 당신은 여기에 튜토리얼이 있습니다 https://www.tutorialspoint.com/db2/db2_triggers.htm

데이터베이스 트리거입니다 특정 이벤트

에 대한 응답 실행 자동으로되는 절차 적 코드
당신은

ALTER TABLE table-name ALTER COLUMN cost set cost=price*quantity; 
으로 비용 컬럼에 대한 기본 값을 설정할 수 있습니다

+0

감사합니다. 블라드. 나는 당신이 나에게이 질문을하는 것조차도 어리 석다는 말을하기를 바랬다. .....하지만 지금은해야만한다 :/감사합니다. –

1

계산 된 열을 사용하여 작업을 수행 할 수 있습니다. 계산 된 열에서 당신은 따라서 위의 쿼리는 u는 그 열을 추가하려는 경우에만 동일한 테이블에 사용되는

ALTER TABLE <TABLENAME> ADD <COLUMN_NAME> AS (<COLUMN_NAME1> * <COLUMN_NAME2>); 

같은 기본 공식을 줄 것이다. 다른 테이블을 추가하려면 다양한 방법이 있습니다.

  1. 거래 (그 원인은 교착 상태 수)
  2. 트리거는 저장 절차없이
  3. (select 절을 사용하여 일반 INSERT 문을)
  4. 저장 프로 시저 (이것은 서버가 느려질 수 있습니다 될 수 있습니다) 우리는 정상적인 insert 문으로 올바른 질의를 할 수 있습니다.

예 :이 방법을 최적화

CREATE TABLE Cost_Table 
(
Cost int 
); 

INSERT INTO Cost_Table (Cost)<BR> 
SELECT price * quantity FROM Table_name; 

. 우리는 트리거 대신 위의 쿼리를 사용할 수 있습니다. 위의 쿼리는 트랜잭션 및 저장 프로 시저 내부에서 사용합니다.

0

주의하지 않으면 중대한 보안 위반이 발생할 수 있습니다. "SQL 코드 삽입"을 찾으십시오.

그러나 이렇게하려면 저장 프로 시저 내에서 EXECUTE IMMEDEATE을 사용하는 다른 경로가있을 수 있습니다.