create or replace function InsertSale() returns trigger as $$ begin insert into Bookstock values(new.Sale_ID,new.Sale_Date,'出库',new.Sale_Number,new.Book_ISBN); update Book set Book_Stock = Book_Stock - new.Sale_Number where Book_ISBN = new.Book_ISBN; return new; end; $$ language plpgsql;这段代码中的Book表无法更新
时间: 2023-06-24 08:06:43 浏览: 317
可能是因为你的代码中没有对Book表进行触发器的设置,导致Book表的更新操作无法被触发。你可以尝试在Book表上添加一个触发器,使其在Sale表进行插入操作时自动更新Book表的库存信息,例如:
```
CREATE OR REPLACE FUNCTION UpdateBookStock() RETURNS TRIGGER AS $$
BEGIN
UPDATE Book SET Book_Stock = Book_Stock - NEW.Sale_Number WHERE Book_ISBN = NEW.Book_ISBN;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER sale_insert AFTER INSERT ON Sale
FOR EACH ROW EXECUTE FUNCTION UpdateBookStock();
```
这样,当Sale表进行插入操作时,触发器会自动更新Book表的库存信息。
阅读全文