gpt4 book ai didi

java - 当我存储相同的主键时累积SQL字段的值

转载 作者:行者123 更新时间:2023-12-01 10:51:57 25 4
gpt4 key购买 nike

我是 Stack Overflow 的新手,我在全世界搜索了这个问题,但没有成功。

我很快就要对这个程序进行考试,这是一个用 java 编写的非常基本的计算机零件商店,其中包含“客户”、“产品”和“销售”。

现在,唯一的问题出现在“产品”和“销售”表上。这两个表在每个表上都有一个 SQL“数量”字段,每次插入重复的主键时,我都必须能够存储产品的数量,而不会出现 SQL 主键重复错误。

这是我的代码:

void guardar(){
conectar cc= new conectar();
Connection cn= cc.conexion();

String sql="";
cod=cli_dni.getText();
ape=cli_ap.getText();
nomb=cli_nom.getText();
tel=cli_tel.getText();
String ivarespon=combocli_iva.getSelectedItem().toString();
sql="INSERT INTO clientes (cli_dni, cli_nom, cli_ap, cli_tel, cli_iva) VALUES (?,?,?,?,?)";
if(ivarespon.equals("Seleccione")){
JOptionPane.showMessageDialog(null, "Select a correct iva taxpayer",
"ERROR_MESSAGE", JOptionPane.ERROR_MESSAGE);
}else{
try {
PreparedStatement psd= cn.prepareStatement(sql);
psd.setString(1,cod);
psd.setString(2,ape);
psd.setString(3,nomb);
psd.setString(4,tel);
psd.setString(5,ivarespon);
int n=psd.executeUpdate();
if(n>0){
JOptionPane.showMessageDialog(null,"Success!");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error" ,
"ERROR_MESSAGE", JOptionPane.ERROR_MESSAGE);
}
cargar("");
limpiar();
}
}

对于“销售”表,每次销售产品时,我都必须能够减去数据库中产品“数量”字段的数量。将数据保存到我的“Sale”sql 表中的 java 方法具有与此相同的代码。

我对这个重复的主键错误感到疯狂,任何帮助都非常受欢迎,我对此表示感谢。

最佳答案

在 9.5 中,新的 ON CONFLICT 操作可能会为您提供良好的服务,但现在您可能需要研究触发器。具体来说,BEFORE INSERT 会更新计数(如果产品存在),然后返回 NULL 以指示 INSERT 不应继续。我强烈怀疑您还必须解决并发(竞争条件)问题,可能是在应用程序级别。

有关触发器的信息,请参阅 Trigger Procedures在 PostgreSQL 文档中。

关于java - 当我存储相同的主键时累积SQL字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com