MySQL таблица с фиксированным количеством строк? - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть стол documents (id, name, time).Существует ли специальная команда sql для установки ограничения таблицы на 10 строк?

Ответы [ 3 ]

2 голосов
/ 25 ноября 2011

Итак, если у вас есть такая таблица:

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 голосов
/ 25 ноября 2011

Если вы просто хотите отобразить «последние 10 сгенерированных документов», нет необходимости в отдельной таблице.Просто используйте запрос к существующей таблице:

SELECT id, name, `time`
FROM documents
ORDER BY `time` DESC
LIMIT 10
2 голосов
/ 24 ноября 2011

нет, вы не можете установить ограничение для таблицы MySQL, вы можете достичь этого с помощью триггера, который удаляет строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...