【发布时间】:2011-07-25 17:56:51
【问题描述】:
我有一个如下所示的数据库:
CREATE TABLE cargo (
cargodate int unsigned NOT NULL,
cargoname CHAR(128) NOT NULL,
lattitude double NOT NULL,
longitude double NOT NULL,
user CHAR(64) NOT NULL
) type=MyISAM;
我想确保同一用户在同一地点的该货物的条目不超过 5 个。一个用户可以有多个条目,只要它们位于不同的位置(纬度、经度)。
如何让我的 sql INSERT 语句处理这个问题?
现在我执行:
INSERT INTO cargo VALUES (UNIX_TIMESTAMP(), '{$cargoname}', '{$lat}', '{$lng}', '{$user}');
我可以删除,但我只想删除超过 5 个条目。在这种情况下,我想删除最旧的条目
谢谢 德肖恩特
【问题讨论】:
-
@ShinTakezou:他想使最旧的行无效,而不是禁止新行。
-
@Wrikken 嗯抱歉;他可以对他将“无效”的记录进行更新,而不是无效,例如像
update ... set column = newvalue .... where condition of an invalid record...虽然这样如果记录不存在,它会失败(如果它们存在更多记录,他会更新所有);那么也许像“更新......如果存在,否则插入”查询? -
您可以使用 InnoDB 吗?即交易。
-
Ermmmm,为了识别最旧的 5 个条目(如果条目超过 5 个),必须有一个计数器(每个货物/位置/用户)或时间戳列
标签: php mysql sql database database-design