表字段:id(主键), ip, user, password, create_time, update_time
索引名1, acc , 字段:name,user 类型Unique,方法BTREE
索引名2,name, 字段 name, 类型 Normal,方法BTREEINSERT INTO account (
account.`ip`,
account.`user`,
account.`password`,
account.create_time,
account.update_time
)
VALUES
(
192.168.1.103',
'test1',
'm3443',
NOW(),
NOW()
)
ON DUPLICATE KEY UPDATE
account.`ip`=VALUES(account.`ip`),
account.`user`=VALUES(account.`user`),
account.`password`=VALUES(account.`password`),
account.update_time=NOW()我想要根据ip和user这两个Unique字段, 有相同的IP和user时,就进行更新,没有就插入新的数据.
ON DUPLICATE KEY UPDATE,我的理解是,ON DUPLICATE KEY UPDATE前面的命令遇到UNIQUE字段而出错时,执行后面的命令,也就是把ip,user,password,update_time更新到数据库中,
但结果是,create_time这个字段也更新成最近的时间了,不知道怎么回事,向各位高手请教下
索引名1, acc , 字段:name,user 类型Unique,方法BTREE
索引名2,name, 字段 name, 类型 Normal,方法BTREEINSERT INTO account (
account.`ip`,
account.`user`,
account.`password`,
account.create_time,
account.update_time
)
VALUES
(
192.168.1.103',
'test1',
'm3443',
NOW(),
NOW()
)
ON DUPLICATE KEY UPDATE
account.`ip`=VALUES(account.`ip`),
account.`user`=VALUES(account.`user`),
account.`password`=VALUES(account.`password`),
account.update_time=NOW()我想要根据ip和user这两个Unique字段, 有相同的IP和user时,就进行更新,没有就插入新的数据.
ON DUPLICATE KEY UPDATE,我的理解是,ON DUPLICATE KEY UPDATE前面的命令遇到UNIQUE字段而出错时,执行后面的命令,也就是把ip,user,password,update_time更新到数据库中,
但结果是,create_time这个字段也更新成最近的时间了,不知道怎么回事,向各位高手请教下
show create table account 看看脚本,应该是设置了 on update 的默认值
按照你的方法操作了一遍
`time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
是不是可以翻译成, timestamp类型, 默认NULL, 值为空的时候自动更新为当前时间??
我以为在navcat里面 设计表选项里可以看到表结构了 ,没想到还要输入命令才能看这样的表结构
那,是不是修改成`time` timestamp DEFAULT NULL就好了?
navcat是不是不能做这样的表结构修改?只能新建一个表了?
ON UPDATE CURRENT_TIMESTAMP 是批更新的时候,如果没有为字段指定值,则更新为 CURRENT_TIMESTAMP
可以直接改表结构, 界面操作没试过,一般都直接用 sql sql 的