5

我将记录我的用户登录时使用的 IP 地址。为此,我有一个包含 3 列的简单表:用户、IP、时间。time 是他们最后一次使用该地址登录的时间。

当他们登录时,我想在数据库中插入一行,其中包含他们登录的 IP 以及他们登录的时间。

如果已经存在具有相同用户和相同 ip 的行,我只想更新时间。一个更普遍的问题:

如果其中的两个(或更多)列相同,我如何插入一行或更新它?

4

1 回答 1

14

您只需要创建复合唯一键user + ip并使用INSERT ON DUPLICATE KEY UPDATE

INSERT INTO tbl (user, ip, `time`) VALUES (1, '1.2.3.4', NOW())
ON DUPLICATE KEY UPDATE `time` = NOW()

要创建索引,请使用类似

CREATE UNIQUE INDEX tbl_user_ip ON tbl (user, ip)
于 2012-06-12T22:07:18.803 回答