5

ユーザーがログインに使用する IP アドレスをログに記録します。これを行うには、user、ip、time の 3 つの列を持つ単純なテーブルを用意します。time は、そのアドレスで最後にログインした時刻です。

ログイン時に、ログインしたIPとログイン時刻を含む行をデータベースに挿入したいと考えています。

同じユーザーと同じ IP を持つ行が既に存在する場合は、時刻を更新したいだけです。より一般的な質問:

行を INSERT したり、2 つ (またはそれ以上) の列が同じ場合に UPDATE したりするにはどうすればよいですか?

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 に答える