2011-11-24 6 views
0

J'ai la table documents (id, name, time). Y at-il une commande sql spéciale pour définir la limite de table de 10 lignes?Table MySQL avec nombre fixe de lignes?

+2

Voulez-vous limiter la quantité de lignes dans la table ou le nombre de lignes renvoyées par une instruction select? – anothershrubery

+0

J'ai besoin de limiter le nombre de lignes dans le tableau –

+0

Eh bien, alors voir la réponse de Haim. Ce n'est pas possible dans un sens traditionnel. – anothershrubery

Répondre

2

Si vous voulez juste afficher les "10 derniers documents générés", pas besoin d'un séparateur La table Utilisez simplement une requête sur votre table existante:

SELECT id, name, `time` 
FROM documents 
ORDER BY `time` DESC 
LIMIT 10 
2

vous ne pouvez pas définir une limite sur la table mysql, vous pouvez réaliser ceci avec le déclencheur qui supprime les lignes.

1

Donc, si vous avez une table comme ceci:

CREATE TABLE documents (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `name` VARCHAR(99) NOT NULL, 
    `time` DATETIME NOT NULL 
) ENGINE = MYISAM 

vous pouvez utiliser cette horrible requête de limiter le nombre de lignes en recyclant la ligne ayant la plus faible champ 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' 

Quelqu'un s'il vous plaît confirmer si cette requête est atomique, je pense que c'est, mais qui sait ...

Questions connexes