oracle - 如何在也存在触发器的表中插入?
问题描述
在过去的几天里,我正在研究我的 SQL 项目“超市计费管理系统”,在这里我在创建这个项目时遇到了很多障碍。由于我是初学者,我无法解决所有问题,所以请帮助我!这是我的疑问:我创建了一个名为“Payments”的表,在其中,我什至创建了一个触发器和一个过程,现在由于触发器和过程,我不知道如何在 Payments 表中插入值。并且我想要这样一个程序,可以将一个人的产品价格加起来并存储到Final Total中,我不确定我的程序代码是否正确,但它已成功创建。因此,如果我的程序代码有任何问题,请告诉我,也请通过举例告诉我如何插入它
支付网络表:
create table Paymnets
(
PayId int primary key, PayDate date,
ProdTotal int,
FinalTotal int,
PayOrdId int references orders,
PayProdId int references Products,
PayCustId int references Customers
);
产品表:
create table Products (
ProdId number primary key,
ProdNum number not null unique,
ProdName varchar2(15),
ProdPrice int,
ProdQuantity int,
ProdCustId int references Customers,
ProdOrdId int references Orders,
ProdStoreId int references Stores
);
程序 :
create procedure FINAL_TOTAL(C IN NUMBER, T OUT NUMBER) IS BEGIN
UPDATE
Payments
SET
FinalTotal = FinalTotal + ProdTotal
WHERE
PayCustId = C;
Commit;
SELECT
FinalTotal into T
FROM
Payments
WHERE
PayCustId = C;
END;
/
扳机:
create trigger PROD_TOTAL
AFTER INSERT ON Products
BEGIN
UPDATE Paymnets
SET ProdTotal = (SELECT Products.ProdPrice * Products.ProdQuantity FROM Products);
END;
/
插入语句:
insert into Payments values(1,'2020-10-07',1,1,1);
好吧,在插入这么多值之后,我知道我会得到一个错误,所以我得到了:
错误:没有足够的值
在这里我想知道,如何在支付表中插入值,如果我的程序代码错误,那么我应该写什么?所以请帮助我解决这些问题!
解决方案
推荐阅读
- javascript - java - 如何在不使用for循环的情况下过滤java脚本中对象数组中的数组元素?
- javascript - 为什么 .textContent 在这种情况下不起作用?无法访问由 javascript 生成的 html 上的 textContent
- python-3.x - 如何访问内部类(Python)中的外部类变量?
- node.js - 在 NodeInjector 中找不到 kf 的提供程序
- databricks - 在我的笔记本中找不到“/dbfs/databricks-datasets”
- powerbi - 显示某些 Power BI 行的空值
- javascript - TailwindCSS:下拉列表不适用于 Nextjs 中的组和组焦点
- url - 如何在strapi应用程序中将graphql添加到heroku?
- reactjs - 部署应用程序时,我的 PDFObject 不显示文件
- python - 如何使用python和django覆盖子类中的父类方法?