数据库停止插入是否与上一次插入相同?怎么样?

时间:2015-02-13 20:06:42

标签: php mysql

对数据库的帮助很小,并且有以下代码:

    $result = mysql_query("select * from mydatabase"); 
 if ( ! mysql_num_rows($result)) { 

 mysql_query("INSERT INTO `mydatabase 

" somedata"等,...

如果在插入上一个结果的同一分钟加载时,如何将其设置为停止?

1 个答案:

答案 0 :(得分:1)

限制此问题的最简单方法是在专门用于此目的的列上创建UNIQUE索引。通常将UNIX time value除以60将产生合适的分钟索引。

这可以安全地存储在INT类型列中。然后你可以做一个常规INSERT,如果由于该列上的键冲突而失败,你可以忽略它。甚至INSERT IGNORE选项也可自动执行此操作。

例如:

CREATE TABLE by_minute (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255),
  minute INT,
  UNIQUE KEY `index_by_minute_minute` (`minute`)
);

INSERT IGNORE INTO by_minute (name, minute) VALUES ('test1', 23730990);

INSERT IGNORE INTO by_minute (name, minute) VALUES ('test2', 23730990);

INSERT IGNORE INTO by_minute (name, minute) VALUES ('test3', 23730991);

这应该只允许插入test1test2行。

您还可以使用FLOOR(UNIX_TIMESTAMP(NOW()) / 60)代替计算出的minute值。