0

我正在尝试为我的应用程序制定最佳的数据库结构和 SQL。

场景是这样的:

Jim 和 John 需要每周针对不同的项目更新他们的时间表。当他们这样做时,他们使用 html 表单来插入基于一周最后一天的日期的小时数。

这很好,将插入一个包含名称、项目、日期和时间的新行

但是,如果 jim 和 john 的工作时间比他们预期的要多,并且需要更新他们的时间表,我希望他们能够使用该表格,并且UPDATE如果名称、项目名称和日期与提交了什么。

要插入的 SQL:

INSERT OR REPLACE INTO RESOURCE(NAME, DATE, PROJECT, HOURS) VALUES ('"+ name+ "', '"+ date+ "', '"+ project+ "','" + hours + "');

工作至今:

我在 SQLITE DB 上创建了以下 DB 结构。

CREATE TABLE RESOURCE (
    name VARCHAR(16),
    date DATE,
    project VARCHAR(16),
    hours VARCHAR(16)
)

我创建了以下索引来尝试解决我的问题。

CREATE UNIQUE INDEX myindex ON RESOURCE(NAME, DATE, PROJECT)

但是,问题是当 jim 更新与 john 相同的日期、项目和时间的工作时间时,Johns 行被替换,只剩下 jims。

希望我已经清楚地解释了这个问题,如果没有,请告诉我,我会提供其他需要的东西。

我的问题是:我可以用我的 SQL 或我的数据库结构来改变什么,以允许上述场景工作?

4

1 回答 1

0

我得到的是,当 jim/jhon 再次进入他的时间时,会执行一个更新查询来更新整个记录,而不是更新 jim/jhons 自己的记录。主要原因是您的表上没有任何唯一键/主键,这就是您的查询更新很多的原因。

您需要做的是有一个键列,并根据该键更新他们的记录,您将在 where 子句中使用类似的内容

WHERE RESOURCE_ID = @RID //特定资源的 ID

于 2013-03-07T11:44:15.110 回答