java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Datenbankprogrammierung

Datenbankprogrammierung Fragen zur Anbindung und Programmierung von Datenbanken bzw. Datenbankabfragen

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 01.11.2009, 17:11   #1 (permalink)
Benutzer
int
 
Registriert seit: 04.06.2009
Fachbeiträge: 51
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard MySQL Einträge löschen

Hallo Leute!

Zunächst: Ich kenne mich noch nicht sonderlich mit MySQL aus.


Dank Tutorials bin ich nun so weit Tabellen zu erstellen, Einträge einzufügen, Einträge zu löschen und Abfragen zu erstellen


Nun bin ich gerad an einem Punkt, an dem ich nicht weiter komme:

Ich möchte drei Tabellen erstellen und diese in einer Datenbank verknüpfen.
In der Datenbank sind mehrere "Projekte" enthalten. Diese Projekte bekommen eine ID.

Z.B.:
Tabelle "Projekte":
Projekt ID >> Projektname
1 Projekt foo 1
2 Projekt foo 2
3 Projekt foo 3


In zwei anderen Tabellen kann man zu diesen Projekte Informationen ablegen. Um eine Information einem Projekt zuzuweisen, ist in dieser Tabelle auch eine Spalte "ID", in der die zugehörige Projekt ID abgelegt wird.

Soweit so gut. Nun habe ich ein Problem beim löschen:
Wenn ein Projekt in der Tabelle "Projekte" gelöscht wird, soll in den beiden anderen Tabellen auch alles zu diesem Projekt gelöscht werden, da sonst Datenmüll in der DB entsteht. Wie mache ich das?

Beispiel:

In Tabelle "Projekte" wird Projekt foo 1 gelöscht:

Tabelle "Projekte":
Projekt ID >> Projektname
2 Projekt foo 2
3 Projekt foo 3


In zwei anderen Tabellen gab es nun mehrere Einträge zu diesem Projekt:

Tabelle "Information":
Projekt ID >> Information
2 "Das Projekt beginnt in wenigen Tagen"
3 "Meilenstein 5 erreicht"
1 "Meilenstein 9 erreicht."
1 "Das Projekt ist abgeschlossen und kann entfernt werden"

Tabelle "Mitarbeiter":
Projekt ID >> Mitarbeiter
2 "Max Mustermann, Hein Blöd, Johnny Walker"
3 "Dr. Jim Beam, Klaus Mayer"
1 "Peter Kruse, Stabilo Pen, Heinz Erhard"

Die insgesamt drei Einträge mit ID = 1 müssen nun auch verschwinden.

Gruß
Happy
Happyman0815 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.11.2009, 08:51   #2 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.608
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
delete from Information where Projekt = ..
usw
?

vor dem Löschen musst du schon wissen wo das Projekt überall drin ist und dann manuell diese Tabellen berichtigen,
oder suchst du ein Verfahren, das zu automatisieren?
höhere Frameworks wie Hibernate bieten sowas an, Datenbanken selber glaube ich nicht,
und trivial selbst zu implementieren ist es auch nicht gerade
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.11.2009, 20:19   #3 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 04.06.2009
Fachbeiträge: 51
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Ah ja danke das hat geholfen. Nein ich brauche kein exotisches Framework! Wie gesagt, es hapert noch am Grundwissen.


Eine weitere Frage habe ich da noch.

Ich habe zwei Spalten:

Erstelldatum und Änderungsdatum.

Wie schaff ich es bei MySQL die Spalten so einzustellen, dass bei Erstelldatum nur einmal das Datum gesetzt wird und bei einem Update nur das Änderungsdatum?

Es geht irgendwie mit dem Typ TIMESTAMP soweit bin ich schon.

Ich habe es aber noch nicht geschafft, dass Erstelldatum nur einmal zu beschreiben und Änderungsdatum sich mit jedem Update aktuallisieren zu lassen. Das gilt dann natürlich für jede Zeile also für jeden Datensatz.

Ich denke Ihr wisst was ich meine

Gruß
Happy
Happyman0815 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.11.2009, 21:39   #4 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von SlaterB
 
Registriert seit: 13.11.2005
Fachbeiträge: 31.608
Abgegebene Danke: 0
Erhielt 2.564 Danke für 2.525 Beiträge
die Spalten haben damit weniger zu tun, die haben hauptsächlich ihren Typ,
ein Default-Wert kann nützlich sein um beim Erstellen automatisch das Datum zu setzen,

aber für Änderungen musst das Datum ganz normal übergeben, wie jeden anderen Wert auch,
hier gibt es vielleicht mehr Möglichkeiten zur Unterstützung, in einem Update-Kommando z.B. den Aufruf der Funktion SysDate()
__________________
Hansa wird Meister.
SlaterB ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.11.2009, 21:59   #5 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 04.06.2009
Fachbeiträge: 51
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
So ein mist, dann kann ja jeder reinschreiben was er will.

Es sein denn die Funktion SysDate() funktioniert.

Könntest du dazu einen SQL Befehle schreiben für Tabelle "foo" ?


Attribute: Inhalt | Erstelldatum | Änderungsdatum


Gruß
Happy
Happyman0815 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 02.11.2009, 22:10   #6 (permalink)
Java-Forum Team
Site Admin
 
Registriert seit: 16.02.2009
Fachbeiträge: 193
Abgegebene Danke: 1
Erhielt 47 Danke für 14 Beiträge
Zitat: Happyman0815
Beitrag anzeigen
Es geht irgendwie mit dem Typ TIMESTAMP soweit bin ich schon.


Gruß
Happy
Zitat:
TIMESTAMP
Damit kann angezeigt werden, wann jede Zeile in der Tabelle zuletzt geändert wurde. Wenn eine Spalte mit DEFAULT TIMESTAMP deklariert wurde, wird bei Einfügungen ein Standardwert geliefert, und der Wert wird beim Aktualisieren der Zeile mit dem aktuellen Datum und der aktuellen Zeit aktualisiert.

Um einen Standardwert beim Einfügen bereitzustellen, die Spalte aber nicht bei jeder Zeilenaktualisierung zu aktualisieren, verwenden Sie DEFAULT CURRENT TIMESTAMP an Stelle von DEFAULT TIMESTAMP.
iAnywhere.com - CREATE TABLE-Anweisung

Vielleicht hilft das

Vladimir
vladimir75 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
brauche Hilfe um Einträge aus Jlist zu löschen mukkerson AWT, Swing, JavaFX & SWT 4 18.03.2009 10:58
List- Einträge löschen Gast Allgemeine Java-Themen 3 17.06.2008 14:12
Doppelte Einträge einer Liste löschen Der Programmierer Java Basics - Anfänger-Themen 6 03.01.2007 13:28
MySQL Zeile löschen und gleich Optimieren Datenbankprogrammierung 6 08.03.2006 09:06
MYSQL Datenbankzugriff unter Linux astryx Datenbankprogrammierung 3 28.07.2004 22:04


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de