该表名为limits
,并采用以下字段:
id | ip | limit
在每个页面加载时,我正在检查用户是否在此表中有记录(由ip
确定),如果他们没有,我插入一条记录。但是,如果记录已经存在,我不想做任何事情。
我基本上需要一个INSERT IF NOT EXISTS
类型的查询。我已经阅读this并且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;
答案 0 :(得分:2)
INSERT IGNORE
将忽略任何唯一索引,无论它是主键还是任何唯一键。
您可以使用
在IP上创建唯一键ALTER TABLE limits
ADD CONSTRAINT idx_limits_ip
UNIQUE (ip)
Manual有一些替代语法来创建索引。
答案 1 :(得分: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')