我想在售书登记后更新库存
CREATE TRIGGER Update_TextBooks
AFTER INSERT ON SalesRegister
FOR EACH ROW
BEGIN
DECLARE nibsn varchar(13);
SELECT Ibsn INTO :nibsn FROM TextBooks WHERE Ibsn=:new.Ibsn ;
UPDATE TextBooks SET Qty=Qty-:new.Qty_of_sales WHERE Ibsn=nibsn;
END;编译提示错误是
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
<a single-quoted SQL string> pipe
<an alternatively-quoted SQL string>不太懂啊 希望大家帮帮忙吧 ~~
CREATE TRIGGER Update_TextBooks
AFTER INSERT ON SalesRegister
FOR EACH ROW
BEGIN
DECLARE nibsn varchar(13);
SELECT Ibsn INTO :nibsn FROM TextBooks WHERE Ibsn=:new.Ibsn ;
UPDATE TextBooks SET Qty=Qty-:new.Qty_of_sales WHERE Ibsn=nibsn;
END;编译提示错误是
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
<a single-quoted SQL string> pipe
<an alternatively-quoted SQL string>不太懂啊 希望大家帮帮忙吧 ~~
AFTER INSERT ON SalesRegister
FOR EACH ROW
BEGIN
DECLARE nibsn varchar(13);
SELECT Ibsn INTO nibsn FROM TextBooks WHERE Ibsn=:new.Ibsn ;
UPDATE TextBooks SET Qty=Qty-:new.Qty_of_sales WHERE Ibsn=nibsn;
END;
SELECT Ibsn INTO nibsn FROM TextBooks WHERE Ibsn=:new.Ibsn ; 同意。
CREATE TRIGGER Update_TextBooks
AFTER INSERT ON SalesRegister
FOR EACH ROW
BEGIN
UPDATE TextBooks SET Qty=Qty-:old.Qty_of_Sales;
END;看来每次插入的时候不需要经过查询,因为对于插入的那一条记录来说它本就是唯一的,但是我还不明白一个问题是,update语句后不需要跟where子句么?
我加上where Ibsn=:new.Ibsn以后报错了。
它是不是自动会用主码来识别要更新的语句呢?还是对整个表的数据都进行了更新?刚开始学 很多问题不是很明白,希望高手指点迷津~~~
2/57 PL/SQL: ORA-00904: "IBSN": invalid identifier
2/4 PL/SQL: SQL Statement ignored
2/57 PL/SQL: ORA-00904: "IBSN": invalid identifier
isbn ibsn 谢谢两位啦