Bonjour, c'est la première fois que je poste sur ce joli site

Alors voilà, j'ai une bête question de syntaxe en SQL.

J'ai une table avec deux champs (string url, date date), qui contiennent... des url et des dates

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<ma_table>
 
url			date
-------------------------------------------
http://host/url_1.wav	14/05/2008 15:20:39
http://host/url_2.wav	15/05/2008 20:30:43
http://host/url_3.wav	16/05/2008 10:55:12
...
J'ai une fonction avec laquelle j'insére de nouvelles lignes (une à une) dans cette table, le champ date étant renseigné par la date d'insertion. J'ai donc écrit une requête 'INSERT INTO <ma_table> bla bla' qui semble marcher très bien, là n'est pas le problème.

Ce que je veux, c'est en faire une sorte de cache FIFO. C'est-à dire que si le nombre de lignes de la tables atteint un certain seuil, alors je remplace la ligne la plus ancienne au lieu d'insérer une nouvelle ligne. J'ai donc écrit la requête suivante, dont la syntaxe me semblait correcte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE <ma_table>
  SET url = '<mon_url>', date = DateTime.Now
    WHERE date = (SELECT MIN(date) FROM <ma_table>)
Ca me retourne l'exception suivante (C#):
ERROR [42000] [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction UPDATE.
Je cherche à savoir pourquoi. J'ai fait quelques tests, et apparemment ça viendrait du fait que date est à la fois dans SET et dans WHERE. Je vois pour le moment deux solutions sales-mais-qui-devraient-marcher-en-attendant-mieux, en faisant 2 requêtes :
- updater l'url, puis updater la date
- supprimer la ligne, puis en insérer une autre
Mais j'aimerais avoir une solution plus propre. Je débute en SQL, donc vos conseils sont la bienvenue...

Merci d'avance.