【发布时间】:2013-01-26 06:41:55
【问题描述】:
我在下面有一个 SQL 插入,它工作正常,但是我希望它检查是否 DATE=xxxx、NAME =xxxx 和 JOB = xxx,如果它们存在则更新 HOURS,否则插入新行。用 SQL 可以吗?
"INSERT INTO TABLE (NAME, DATE, JOB, HOURS) VALUES ('BOB', '12/01/01', 'PM','30');
尝试以下 OR REPLACE 的结果相同,每次都会添加一个新行。
add_time = conn.prepareStatement("INSERT OR REPLACE INTO RESOURCE (NAME, DATE, JOB, HOURS) VALUES ('"+name+"', '" + date + "', '"+job+"','"+hours+"');");
例如:
如果以下内容在数据库中,并且 John 想要更新他的工作时间,它将检查姓名、日期、工作是否与尝试插入的值相同,并且它们是否仅更新 HOURS。否则,如果它们都不存在一起(John 可能有几个小时记录在另一个 DATE 或 JOB 上)插入一个新行。
其他人也会将他们的工作时间和不同的角色记录在同一个数据库中,如下所示。
约翰 | 2012 年 12 月 12 日 |清洁剂 | 20 约翰 | 2012 年 12 月 12 日 |首席执行官 | 10 吉姆 | 2011 年 12 月 10 日 |清洁剂 | 5
【问题讨论】:
-
是的,即使通过多种方法,我最好的选择是
UNIQUE()约束。