我有表documents (id, name, time)
。是否有一个特殊的sql命令将表限制设置为10行?
答案 0 :(得分:2)
没有你不能在mysql表上设置限制,你可以用删除行的触发器实现这一点。
答案 1 :(得分:2)
所以,如果你有这样的表:
CREATE TABLE documents (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR( 99 ) NOT NULL,
`time` DATETIME NOT NULL
) ENGINE = MYISAM
然后你可以通过回收具有最低id
字段的行来使用这个可怕的查询来限制行号:
INSERT INTO documents (id,name,time)
SELECT
IF( (SELECT COUNT(*) FROM documents) < 3 -- max row number you allow
,NULL -- just use autoincrement id
,(SELECT MIN(id) FROM documents) -- update row with smallest id
),
-- your values to insert
'name'
,'2011-11-11'
ON DUPLICATE KEY UPDATE
id = (SELECT MAX(id)+1 FROM documents) -- new id
-- your values again, now for update
,name = 'name'
,time = '2011-11-11'
有人请确认这个查询是否是原子的,我认为是,但谁知道...
答案 2 :(得分:2)
如果您只想显示“最新的10个生成的文档”,则无需单独的表格。只需在现有表格上使用查询:
SELECT id, name, `time`
FROM documents
ORDER BY `time` DESC
LIMIT 10