PDA

View Full Version : [FRAGE] - Einfügen von Tupeln??? :ahhh:


Ordovicium
29-05-2002, 14:27
Wieso haut das nicht hin??????

insert
into ware (ProdId, Bezeichnung, Preis, Bestand, HerstId)
values (4756, X-Box, 299, 20, 20)

meclens
29-05-2002, 14:36
achte darauf, dass du alle werte (außer die zahlen-werte) in hochkommata anführst: bezeichnung -> "xbox" und du keinen autoincrement manuell setzten willst (ProdIDd?)

Ordovicium
29-05-2002, 14:52
insert
into ware (ProdId, Bezeichnung, Preis, Bestand, HerstID)
values (1, 'XBox', 299, 20, 20)


geht nicht.

Habe die Def. für die Tabelle von Seite 23 unten genommen.

meclens
29-05-2002, 14:58
existiert bei dir ein datensatz mit Herstellerid 20 in Tabelle Hersteller (Fremdschlüssel!)?

Ordovicium
29-05-2002, 14:59
Öhm nein
http://websql.dbai.tuwien.ac.at/dmlu/sql.php?db=dmlu&server=1&rel_type=&table=ware&goto=db_details.php&goto=db_details.php&sql_query=SELECT+%2A+FROM+%22ware%22&zero_rows=PostgreSQL+returned+an+empty+result+set+ %28i.e.+zero+rows%29.

meclens
29-05-2002, 15:01
btw. falls du tabellendef. 1zu1 übernommen hast, ists' ok, dass du die ProdId angibst, wenn nicht und ProdId sollte aus irgendeinem Grund ein autoincrement sein, darfst du diesen im insert nicht angeben (wie der name schon sagt, wird dieser wert automatisch fortlaufend +1 gesetzt).

Ordovicium
29-05-2002, 15:09
Kannst du mir mal die Fehlermeldung erklären:

PostgreSQL said: ERROR: referential integrity violation - key referenced from ware not found in hersteller

meclens
29-05-2002, 15:10
meine vermutung hat sich nach probieren bestätigt - hier die fehlermeldung vom sql-server:

Error - /usr/local/www/data.default/dmlu/sql.php -- Line: 90
PostgreSQL said: ERROR: referential integrity violation - key referenced from ware not found in hersteller
Your query:
insert
into ware (ProdId, Bezeichnung, Preis, Bestand, HerstId)
values (1, 'XBox', 299, 20, 20)

Da du die Tabelle mit referenzieller int. angelegt hast, mußt du auch darauf achten, dass die integritätsbedingungen gegeben sind (dh. in diesem fall, dass du keinen datensatz einfügen kannst der eine herstid besitzt die nicht in hersteller definiert ist.)

meclens
29-05-2002, 15:14
hab deinen letzten post erst später gelesen - hier noch mal eine erklärung der ref. int.:

r. i. bedeutet, dass die rdbms nichts anstellt, wenn die r. i. bedingungen nicht erfüllt sind = ein gewisser maß von schutz des datenbestandes. das bsp. aus dem buch ist eh ganz sinnvoll: man kann hier keine waren anlegen, deren hersteller man (od. besser gesagt die rdbms) nicht kennt und umgekehrt ganz sinnvoll: keine hersteller löschen, von denen noch waren verkauft werden.

deswegen mußt du beim einfügen bzw. löschen die r. i. bedingungen beachten -> in deinem fall muss der hersteller 20 in der hersteller-tabelle existieren, damit du eines seiner produkte in dein Sortiment aufnehmen kannst.

ich hoffe, ich konnte helfen!

Ordovicium
29-05-2002, 15:19
Na gut dann, kann ich da eh nicht weiter machen, da die Tabelle Hersteller nicht von mir ist, und somit nicht weiss wie sie def. ist.

Auf jeden Fall danke für den privaten Unterricht :)
Du konntest mir so einiges näher bringen.

meclens
29-05-2002, 15:21
bitte, bitte!

tipp: leg dir eine tabelle ware2 an die auf die tabelle hersteller2 referenziert (jeweils mit den selben strukturen wie im buch), dann kannst weitermachen!

mfg

clemens