抱歉我的英文不好, 我有4列数据库,我需要“更新或插入”SQL命令 http://i.stack.imgur.com/Tdd6f.jpg
我希望如果MAC地址相同,那么只更新“maki”和“IP”列。 不要更改“dur”值
如果MAC地址没有我的数据库,则INSERT maki,MAC,IP数据。 我的代码有效,但它将“dur”列数据1更改为0(默认值)
INSERT INTO table (MAC, maki, IP)
Select MAC , maki , IP WHERE Not EXISTS (SELECT 1 FROM table WHERE MAC = '" + MAC + "' and dur = 1)
答案 0 :(得分:1)
这里你最好的策略可能是使用SQLite"交易。"
请参阅:https://www.sqlite.org/isolation.html(" SQLite中的隔离。")
顺便说一下 非常重要您仔细阅读了该网页 (" SQLite是一个非常特殊的案例......")
基本上,您启动一个事务,然后执行SELECT。如果返回一行,则更新该行。否则,插入一个新行。然后,提交事务。
用SQL术语来说,"事务"是" 原子工作单元。" 要么"一切都会发生," 或"什么都没有。" 而且,从其他所有用户的角度来看,此活动已隔离,因此"正在进行中"行动将不会被看到。
答案 1 :(得分:-1)
您可以使用INSERT OR REPLACE
声明。或者,您可以选择将记录计数到变量中,以确定MAC
是否已存在。如果是,则可以执行常规UPDATE
,否则执行标准INSERT
。
您可以在此处查看INSERT OR REPLACE
的简单示例:http://sql.learncodethehardway.org/book/ex11.html
以下是有关REPLACE
:https://www.sqlite.org/lang_replace.html