我在下面有一个SQL插入,工作正常,但是我想检查DATE = xxxx,NAME = xxxx和JOB = xxx,如果它们存在则更新HOURS,否则插入新行.这可能用SQL吗?
"INSERT INTO TABLE (NAME, DATE, JOB, HOURS) VALUES ('BOB', '12/01/01', 'PM','30');
Run Code Online (Sandbox Code Playgroud)
尝试使用相同结果的下面的OR REPLACE,每次都会添加一个新行.
add_time = conn.prepareStatement("INSERT OR REPLACE INTO RESOURCE (NAME, DATE, JOB, HOURS) VALUES ('"+name+"', '" + date + "', '"+job+"','"+hours+"');");
Run Code Online (Sandbox Code Playgroud)
例如:
如果以下是在DB中,并且John想要更新他的小时数,那么它将检查名称,日期,作业是否与尝试插入的值相同以及它们是否仅仅是更新HOURS.否则,如果它们中没有一个存在(John可能有几个小时记录另一个DATE或JOB)插入一个新行.
其他人也会在下面的同一个数据库中记录他们的小时和不同的角色.
约翰| 12/12/2012 | 清洁剂| 20约翰| 12/12/2012 | 首席执行官 10吉姆| 12/10/2011 | 清洁剂| 五
你可以REPLACE INTO像这样使用:
REPLACE INTO mytable (NAME, DATE, JOB, HOURS)
VALUES ('BOB', '12/01/01', 'PM','30')
Run Code Online (Sandbox Code Playgroud)
但是,您必须为此创建唯一索引:
CREATE UNIQUE INDEX myindex
ON mytable(NAME, DATE, JOB)
Run Code Online (Sandbox Code Playgroud)
请注意,您应该将这些字段组合用于唯一索引,以确定是否将两行视为相同且应替换而不是插入.
请注意,如果您注释掉唯一索引创建,它将停止正常工作.
| 归档时间: |
|
| 查看次数: |
25109 次 |
| 最近记录: |