# insert in 2 tabellen



## Mythos (13. Jun 2008)

Hi,

ich habe 2 Tabellen : Datum
                               jahr | monat | tag

                             : termin
                               monat | tag |event

und ich ich möchte in "monat" und "tag" denselben Datensatz einlesen. Kann man mit dem Insert-Befehl beide
Tabellen ansprechen und wenn ja wie oder muss man sie einzeln bearbeiten.

Gruß

Mythos


----------



## ARadauer (13. Jun 2008)

was meinst du mit einlesen? select oder insert?

bei einem insert kannst du nur immer eine tabelle ansprechen, du musst also zwei querys verwenden


----------



## Mythos (13. Jun 2008)

ARadauer hat gesagt.:
			
		

> was meinst du mit einlesen? select oder insert?
> 
> bei einem insert kannst du nur immer eine tabelle ansprechen, du musst also zwei querys verwenden



Ich meine "insert", habe aber mein Problem jetzt aber mit 2 inserts gelöst.


----------



## Mythos (13. Jun 2008)

Gleich Ausgangslage wie oben beschrieben.

Das Problem ist folgendes, wenn ich nun meine Datenbank mit input füttere, zum Beispiel für jahr: 2000 , monat : Mai , tag : 29 und als event : essen, dann trägt er es ordentlich in die beiden Tabellen ein.

Wenn ich aber die Daten oben 1:1 übernehme, mit der Ausnahme, das ich als tag:21 eingebe.
Dann meckert er etwas von "Duplicate entry `2000`for key 1" 

Wie erreiche ich dass im selben jahr und monat ein anderen tag in die Datenbank eingetragen wird, sollte später dann in etwa wie unten aussehen.

Jahr: 2000 , Monat : Mai , tag : 29, event : essen 
Jahr: 2000 , Monat : Mai , tag : 21, event : essen 



```
if (a==5){
			try {
			System.out.println("Daten bitte in folgender Reihenfolge eingeben");
			System.out.println("jahr, monat, tag,event: ");
			System.out.println();
			
			System.out.println("jahr: ");
			int eingabe50 = tastatur.nextInt();
			
			System.out.println("monat: ");
			String eingabe51 = tastatur.next();
			
			System.out.println("tag: ");
			int eingabe52  = tastatur.nextInt();
			
			System.out.println("event: ");
			String eingabe04 = tastatur.next();
			
			PreparedStatement datenbank_erweitern = con.prepareStatement("insert into datum (jahr,monat,tag) values(?,?,?)");
			PreparedStatement datenbank_erweitern00 = con.prepareStatement("insert into termin (monat,tag,event) values(?,?,?)");
			
			
			datenbank_erweitern.setInt(1, eingabe50);
			datenbank_erweitern.setString(2, eingabe51);
			datenbank_erweitern.setInt(3, eingabe52);
		
		        datenbank_erweitern00.setString(1, eingabe51);
			datenbank_erweitern00.setInt(2, eingabe52);
			datenbank_erweitern00.setString( 3, eingabe04);
				
			datenbank_erweitern.execute();
			datenbank_erweitern00.execute();
			
			
			}catch (InputMismatchException e){
				
				System.out.println("Falsche Eingabe");
				System.out.println("");
			}
		
		}
```


----------



## ms (13. Jun 2008)

Sagt dir "Primary Key" oder "Unique" etwas?

ms


----------



## Mythos (13. Jun 2008)

ms hat gesagt.:
			
		

> Sagt dir "Primary Key" oder "Unique" etwas?
> 
> ms



Ja schon, aber worauf willst du hinaus, bin kein sql experte arbeite mich gerade rein.


----------



## ms (13. Jun 2008)

> "Duplicate entry `2000`for key 1"


Naja, deine Fehlermeldung deutet darauf hin, dass du versuchst in eine Spalte einen Wert einzufügen, den es schon gibt.

ms


----------



## Baunty (19. Jun 2008)

Wenn du einer Spalte sagst das sie Primary Keys enthält dienen diese zur eindeutigen Identifizierung des Tupels.
Wenn du natürlich das Jahr als PK nutzt kannst du dort keine doppelten Werte vorkommen lassen.
Es empfielt sich oft ein ID fehlt zu erstellen welches als Primary Key fungiert.

Unique, lasst mich lügen, sagt im Prinzip auch nur das keine Werte doppelt vorkommen dürfen ( bedeutet ja Einzigartig )...


----------

