1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

wie realisiere ich einen Pufferspeicher in MySQL?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von mysqlnoob, 10 Februar 2012.

  1. mysqlnoob

    mysqlnoob Benutzer

    Hallo.
    Ich kenn mich mit DBs nicht wirklich gut aus, darum meine Frage: Wie kann ich es realisieren das ich in meiner DB max 50 Zeilen habe, und danach die erste Zeile überschrieben wird, der Index aber immer weiterläuft?
    Danke im Voraus
     
  2. ukulele

    ukulele Datenbank-Guru

    Meinst du mit Index einen Zähler für die ID der immer weiter läuft oder den Tabellen Index? Letzteres wird durch die DB verwaltet und sollte sich dem Inhalt anpassen, ersteres könnte man auf unterschiedliche Weise realisieren.

    Ein Trigger könnte verhindern, das zu einem beliebigen Zeitpunkt mehr als 50 Zeilen in einer Tabelle stehen. Allerdings gibt es grade im Bereich Trigger einige Unterscheide zwischen MSSQL und MySQL. Ich glaube bei MySQL kann man es per BEFORE Trigger machen, ich hab aber noch nie einen auf MySQL Basis geschrieben.

    Aber wozu das ganze eigentlich?
     
  3. mysqlnoob

    mysqlnoob Benutzer

    Mit Index meine ich einen Integer-Wert den ich AUTO-INCREMENTIERE.
    Ich will von einer SPS Daten für ein Diagramm in die DB schreiben und will aber z.B.: nur max. 50 Werte drinnen haben da ich die Werte alle 2 Sekunden rauf schreibe und die DB sonst irgendwann "übergeht".
    Meine DB habe ich in MySQL.
     
  4. ukulele

    ukulele Datenbank-Guru

    Dann würde ich sowas hier verwenden: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

    Code:
    CREATE TRIGGER asdf BEFORE INSERT ON tabelle
      FOR EACH ROW BEGIN
        WHILE    (    SELECT    count(*)
                    FROM    tabelle ) >= 50
        BEGIN
                DELETE
                FROM    tabelle
                WHERE    [index] = (    SELECT    min([index])
                                    FROM    tabelle )
        END
      END;
    Allerdings weiss ich nicht, ob das in MySQL funzt, einfach mal probieren.
     
  5. mysqlnoob

    mysqlnoob Benutzer

    Eine Frage: statt Tabelle schreibe ich meinen Tabellennamen, das ist klar, aber was schreibe ich statt count?
     
  6. ukulele

    ukulele Datenbank-Guru

  7. mysqlnoob

    mysqlnoob Benutzer

    Wenn ich genau das in bei phpMyAdmin reinschreiben kommt :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEGIN
    DELETE
    FROM Variablen
    WHERE [' at line 5
     
  8. ukulele

    ukulele Datenbank-Guru

  9. ukulele

    ukulele Datenbank-Guru

    Code:
    CREATE TRIGGER asdf BEFORE INSERT ON tabelle
    
    FOR EACH ROW BEGIN
    
    WHILE ( SELECT count(*) FROM tabelle ) >= 50 DO
    DELETE FROM tabelle WHERE [index] = ( SELECT min([index]) FROM tabelle )
    END WHILE
    
    END;
    
     
  10. mysqlnoob

    mysqlnoob Benutzer

    Okay, ich probiers mal damit.
    Und ja, es kann SQL-Codes auf der DB ausführen.
     
Die Seite wird geladen...

Diese Seite empfehlen