편법입니다만, 트리거를
AS
declare variable AQty Decimal(12,3);
declare variable AUnit Decimal(12,3);
declare variable AAmount Decimal(12,3);
begin
AQty = New.qty;
AUnit = New.Unit_price;
AAmount = AQty * AUnit;
New.amount= AAmount;
end
이렇게 고쳐서 써보세요.
원인은 잘 모르겠습니다만, 이렇게 고쳐서 쓰니 잘 되는군요.
초보자 님이 쓰신 글 :
: 이런 필드가 있습니다.
:
: Qty [Double Precision]
: Unit_Price [Double Precision]
: Amount [Double Precision]
:
: Before Insert/Before Update 의 트리거에서
:
: new.amount = new.qty * new.unit_price;
:
: 이렇게 넣어줬습니다.
:
: 업체에서 계산이 맞지 않는다는 연락을 받고 확인해봤는데...
: 파이어버드가 계산을 이상하게 하더군요.
:
: 다음은 파이어버드가 계산한 값입니다.
:
: qty unit_price amount
: -------- ---------- --------------
: 10,327.56 4,700 48,539,529.98
:
: 윈도의 계산기와 델파이에서의 계산 결과는 48,539,532 로 나오는데요
:
: 파이어버드와 계산 값이 무려 2원 정도 차이가 납니다.
: 이걸 어떻게 해야할지 막막하네요.
:
: 이 글을 보시는 분들도 저런 필드를 만들고 값을 넣어서 테스트 해보시면
: 아마 황당한 결과를 보실겁니다.
:
: 좀 도와주세요. 흑흑...
:
: 앗, 참고로 파이어버드 버젼은 2.0 rc5로 최신의 상태입니다.
|