哪个SQL可以工作?

时间:2013-03-07 08:06:56

标签: sql database sqlite

我正在尝试为我的应用程序找出最好的数据库结构和SQL。

情景如下:

  

吉姆和约翰每周需要更新他们的时间表   项目。当他们这样做时,他们使用html表格插入他们的   小时基于一周最后一天的日期。

这很好,并会插入一个包含NAME,Project,Date和Hours的新行

然而,如果jim和john做的时间比他们预期的要多,并且需要更新他们的时间表,我希望他们能够使用该表格,如果名称,它将UPDATE数据库的时间INSERT OR REPLACE INTO RESOURCE(NAME, DATE, PROJECT, HOURS) VALUES ('"+ name+ "', '"+ date+ "', '"+ project+ "','" + hours + "'); 项目名称和日期与提交的内容相匹配。

SQL TO INSERT:

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

到目前为止工作:

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

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

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

{{1}}

然而,问题是当jim更新他的小时数,相同的日期,项目和时间为john,Johns行被替换并且只剩下jims。

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

我的问题是:我可以使用我的SQL或我的数据库结构更改哪些内容可以使上述方案生效?

1 个答案:

答案 0 :(得分:0)

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

你需要做的是有一个关键列,并且根据该关键字你将更新他们的记录,你将在where子句中使用这样的东西

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