1

该表被调用limits并采用以下字段:

id    |    ip    |    limit

在每次页面加载时,我都会检查用户在此表中是否有记录(由 确定ip),如果没有,我会插入一条记录。但是,如果记录已经存在,我不想做任何事情。

我基本上需要一个INSERT IF NOT EXISTS类型查询。我已经读过这个,这个INSERT IGNORE例子看起来不错,但据我所知,它只适用于主键。在我的情况下,该id字段是主键,我想检查它是否ip已经存在。

这是某种伪 SQL 代码:

INSERT INTO `limits` (ip, limit)
VALUES ('127.0.0.1', 8)
IF NOT EXISTS `limits`.`ip`

谢谢你的帮助!

编辑:也试过这个

INSERT IGNORE INTO `limits`
SET `ip` = ‘127.0.0.1′,
`limit` = 8;
4

2 回答 2

2

INSERT IGNORE将忽略任何唯一索引,无论是主键还是任何唯一键。

您可以使用在 IP 上创建唯一密钥

ALTER TABLE limits
  ADD CONSTRAINT idx_limits_ip
  UNIQUE (ip)

手册有一些替代语法来创建索引。

于 2013-01-30T21:06:10.923 回答
0
INSERT INTO `limits` (ip, limit)
SELECT '127.0.0.1', 8
WHERE NOT EXISTS (SELECT * FROM `limits` WHERE `limits`.`ip` =  '127.0.0.1')
于 2013-01-30T20:26:19.733 回答