gpt4 book ai didi

java - 基于两列的重复键

转载 作者:可可西里 更新时间:2023-11-01 08:33:06 26 4
gpt4 key购买 nike

我的 Java 应用程序有点问题,要么我不够了解,要么这不可能以简单的方式实现。我希望它是第一个选项,因为我是初学者。

这是我的 table :

CREATE TABLE IF NOT EXISTS `evolution` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product` varchar(50) NOT NULL,
`quantity` double NOT NULL,
`date` date NOT NULL,
`operator` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
)

我想按日期跟踪一些产品的销售情况。

我想要实现的是:假设运算符(operator)今天进入,17.01.2014产品banana数量4 .那天晚些时候他将插入apples数量 10 .同一天他会插入banana数量 1apples数量 12 .

明天他也会这样做,插入 bananas数量 2但在日期 18.01.2014 .这应该在新的一行中,因为它是同一产品但日期不同。

在这种情况下,我需要我的数据库执行以下操作:检查是否banana已插入 17.01.2014 .如果没有,插入数量0+4 .如果香蕉已经插入 17.01.2014更新数量4+1 .

第二天它会检查是否banana已插入 18.01.2014 .If not, insert it with the quantity 2 .如果是,更新数量。

所以:我不能有任何列是唯一的,因为 apples 的日期可以相同和 banana日期和数量也一样。

我怎样才能做到这一点?我考虑了几种方法,但效率不高:

  1. Select (product,date) from evolution where product=banana AND date=18.01.2014如果这返回任何内容,那么我将执行更新。如果这没有返回任何内容,那么我将执行插入。

  2. 做专栏product-date那将是独一无二的。我将在其中插入例如 banana 17.01.2014 .这会更容易,但我不喜欢这种方式,它很脏。

如果我可以在重复键上做类似 double 的事情,所有这一切都会很容易。尝试插入 banana and date .然后,如果组合已经存在,则进行更新。

为了让它更短更容易理解:

这是有效的:

+-------+----------+
|product|date |
+-------+----------+
|banana |17.01.2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+
|apples |17.01.2014|
+-------+----------+
|apples |18.01.2014|
+-------+----------+

这是无效的:

+-------+----------+
|product|date |
+-------+----------+
|banana |17.01.2014|
+-------+----------+
|banana |17.01 2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+

因此它们(productdate)可以单独有重复项,但不能在一起。

很抱歉发了这么长的帖子……我希望我没有错过任何简单干净的方法来做这件事,但我可能而且我当然希望如此,我是编程的初学者。谢谢,祝你有个美好的夜晚!

最佳答案

听起来你想要一个关于产品和日期的复合键。

PRIMARY KEY (product, date)

复合主键本质上是一种使用多个键来确定事物唯一性的方法。例如,如果您的商店只出售蓝色或红色的锤子和钉子,您无法在数据库中将它们识别为锤子或蓝色,您必须同时使用两者

tool  |  color |  quantity
hammer blue 4
hammer red 3
nail blue 1
nail red 6

您的 PK 将在工具和颜色上。

关于java - 基于两列的重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175019/

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