DB-Tabelle bei Laufzeit kopieren



  • Hallo,

    folgendes Problem:

    -Ich habe 2 MySQL-Datenbanken. "cad" und "verwaltung".
    -Neue Artikelnummern werden über CAD auch in die DB "cad" eingepflegt.
    -Um nun Bestellungen etc. abwickeln zu können, gibt es eine zweite DB "verwaltung".
    -In der DB "verwaltung" gibt es aber leider auch eine Tabelle, die Artikelnummern (teilweise andere als in der "cad" DB-Tabelle) enthält.

    Ich sollte aber alle Artikelnummern an einem Platz (=einer) DB und einer Tabelle haben.

    Ich hoffe, mein Problem ist einigermaßen verständlich?!

    Hat von Euch jemand eine Idee, wie ich alle Daten (Artikelnummern) an einen Ort (eine Tabelle in der DB "verwaltung") bekommen?
    Wenn eine neue Artikelnummer in "cad" angelegt wird, sollte diese daraufhin natürlich auch am anderen Ort verfügbar sein.
    Kann man die DB-Tabelle bei Laufzeit irgendwie kopieren? Oder ein Anweisung, die alle x-Minuten prüft, ob es Änderungen gibt?

    Wäre für Eure Hilfe sehr dankbar, da ich sonst vor einer für mich unlösbaren Aufgabe stehe. VIELEN DANK!



  • Was hat das mit C# und .NET zu tuen?
    Geht es rein um die Datenbanken, bist du hier im falschen Forum.



  • Oh, das hatte ich vergessen zu erwähnen.
    Das ganze soll mit C# umgesetzt werden. D.h. auch der Teil, mit dem später die Bestellungen etc. vorgenommen werden, soll damit umgesetzt werden.
    Daher wird mein Problem wohl auch nur mit C# zu lösen sein?!



  • Also hast du schon was geschrieben wozu du Fragen hast?Weil Hausaufgaben machen wir hier keine.
    Weiterhin finde ich es ist irgendwie ein Logikproblem in der Datenbankstrukur.
    Was ich machen würde ist, sämtliche Tabellen in einer Datenbank zusammenzufassen und dann über Fremdschlüsselbeziehungen mit den Artikelnummern hantieren.



  • Hausaufgaben sind das bei weitem nicht ... 😉

    Hab bisher keinen Code, da ich mir vorher über die Logik/das Vorgehen Gedanken machen möchten.

    Das ganze soll quasi ein ERP-System ergeben, wo ich besagte Artikelnummern aus einer anderen DB brauche.

    Die Daten einmalig an einen gemeinsamen Ort zu bekommen ist schon klar.
    Mein Problem ist, wie ich es steuern kann, dass wenn ein neuer Artikel angelegt wird, diese Daten dann automatisch und zeitnah in die andere DB kommen?!
    Das soll natürlich so geschehen, dass die Nutzer nichts davon mitbekommen.

    Wenn mein ERP-System auf C# aufgebaut ist, sollte dieses Problem doch auch damit gelöst werden? Oder muss ich wirklich an ein DB Forum wenden?



  • Also ich frag mal anders, die Daten die eingepflegt werden, werden die auch über eine C# Anwendung eingepflegt?Weil dann könnte man ja gleichzeitig die andere DB mit füllen.



  • Nein, die werden über ein CAD-Programm eingepflegt.



  • Stimmt, stand ja ganz oben, hatte ich ganz vergessen.
    Und wenn du gleichzeitig die Daten mit in die andere DB einpflegen lässt?Leider bin ich nich so versiert in dem Thema, wie man über 2 Tabellen eine Beziehung herstellt.



  • Kannst Du die beiden DB's zusammenlegen oder müssen sie getrennt sein?
    Alternativ kannst Du mal nach mysql und replication googlen, vllt gibt es ja Systeme die das automatisch erledigen.



  • An dem Programm können wir nichts ändern, d.h. es gibt keine Möglichkeit die Daten gleichzeitig in beide DBs eintragen zu lassen.
    Und die Datenbanken müssen auch getrennt bleiben.

    Könnte man anhand eines TIMESTAMP Felds in der Tabelle nach aktuellen (=neuen) Datensätzen suchen und diese dann einzeln in die andere DB kopieren lassen?
    Wobei ich dann wohl eine Funktion bräuchte, die permanent prüft? Das würde wohl zuviel Speicher verbrauchen?



  • Bergfloh schrieb:

    Könnte man anhand eines TIMESTAMP Felds in der Tabelle nach aktuellen (=neuen) Datensätzen suchen und diese dann einzeln in die andere DB kopieren lassen?
    Wobei ich dann wohl eine Funktion bräuchte, die permanent prüft? Das würde wohl zuviel Speicher verbrauchen?

    Ich schreibe es nochmal: Alternativ kannst Du mal nach mysql und replication googlen, vllt gibt es ja Systeme die das automatisch erledigen.



  • Warum kam noch nicht das Stichwort 'Trigger'?
    Das ist doch wohl der Anwendungsfall schlichthin oder hab ich irgendwas falsch verstanden?



  • Könnte man anhand eines TIMESTAMP Felds in der Tabelle nach aktuellen (=neuen) Datensätzen suchen und diese dann einzeln in die andere DB kopieren lassen?

    Ja, das ginge sicher. Man kann bei MSSQL z.B. einer Datumsspalte den Defaultwert "getdate()" geben, und bekommt so das Einfügedatum, egal ob das Programm es unterstützt oder nicht.
    p.S.: sehe gerade erst dass du MySQL verwendest. Müsstest du gucken ob MySQL das auch kann. Aber siehe unten, das geht mit MySQL ziemlich sicher auch.

    Wobei ich dann wohl eine Funktion bräuchte, die permanent prüft? Das würde wohl zuviel Speicher verbrauchen?

    Das Problem sehe ich nicht. Index drauf, und fertig.
    Wenn dann würde ich aber eher eine "ist_schon_kopiert" Spalte machen, wo per Default 0 drin steht, und der Kopier-Job dann eine 1 reinschreibt.

    Jockelx schrieb:

    Warum kam noch nicht das Stichwort 'Trigger'?
    Das ist doch wohl der Anwendungsfall schlichthin oder hab ich irgendwas falsch verstanden?

    Gute Frage 🙂
    Weiss ich auch nicht.
    Klar kann man das halbwegs elegant mit Triggern lösen, bin ich ganz deiner Meinung.



  • Das mit dem Trigger hört sich gut an, eigentlich genau das was ich suche!
    Vielen Dank für Eure Hilfe! Werde es damit mal versuchen!


Anmelden zum Antworten