Итак, если у вас есть такая таблица:
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'
Кто-нибудь, пожалуйста, подтвердите, если этот запрос атомарный, я думаю, что это так, но кто знает ...