【发布时间】:2014-04-18 10:50:52
【问题描述】:
每当 product_inv 更新但我的代码没有运行时,我都会尝试更新产品表。请帮我解决这个问题
create table Product
(
P_ID varchar2(10) constraint cat_pk PRIMARY KEY,
P_name varchar2(15) constraint Cat_unqnn UNIQUE NOT NULL,
P_Brand varchar2(15) CHECK(P_Brand IN('Yes', 'No')),
P_Cost varchar2(6),
P_qty number
);
insert into product values('10', 'Coke', 'Yes', '34', '8');
insert into product values('20', 'Pepsi', 'No', '25', '6');
create table Product_Inv
(
P_ID varchar2(5) REFERENCES Product(P_ID),
Rate varchar2(5) constraint prodcut_rate_nn NOT NULL,
Qty number constraint prodcut_qty_nn NOT NULL,
Discount varchar2(15),
Lot_ExpiryDate varchar2(10)
);
create or replace trigger Product
AFTER insert or update or delete on Product_Inv
for each row
begin
UPDATE Product
SET p_qty = p_qty + new.Qty
WHERE p_id = new.p_id;
end;
在此插入后,项目 10 将是先前的 8 + 此 9 ,但有一些错误。
insert into Product_inv values('10', '25', '9', '25', '19-8-2014');
【问题讨论】:
-
插入 Product_inv 后,您在产品表中得到了什么?
-
触发器无效,重新验证失败!!
-
@llesh 什么都没有!!只是上面提到的错误
-
我不确定这是否会产生错误,但首先更改您的触发器名称,因为您的表名称和触发器名称都相同。第二,当你传递数值而不是不带引号写它们。
-
无关但善意的建议:请重新考虑您的一些数据类型