CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
23.04.2013, 16:53:05
|
Anfänger
|
|
Registriert seit: Feb 2013
Alter: 69
Beiträge: 12
|
|
AW: Einfügen von Daten in 2 Tabellen
Hallo,
also hier meine create Anweisung, die ohne Probleme ausgeführt wird:
CREATE table bestellung(
id_bestellung int(11),
nachname varchar(80),
vorname varchar(80),
strasse varchar(80),
ort varchar(100),
mail varchar(60),
telefon varchar(40),
nachricht varchar(400),
kato int(4),
kata int(4),
katb int(4),
katc int(4),
katd int(4),
datum date,
fbest_id int(4),
Primary Key (id_bestellung),
Foreign Key (fbest_id) references besteller(id_besteller)
) ENGINE=InnoDB ;
Irgendetwas muss mit der INSERT/SELECT Anweisung nicht funktionieren ...
|
23.04.2013, 17:00:17
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Einfügen von Daten in 2 Tabellen
Und wie sieht es mit der zweiten Tabelle aus?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
23.04.2013, 17:11:31
|
Anfänger
|
|
Registriert seit: Feb 2013
Alter: 69
Beiträge: 12
|
|
AW: Einfügen von Daten in 2 Tabellen
Dann muss ich den fk wieder löschen - sonst kann ich die Tabelle nicht löschen -
ist aber garantiert InnoDB - das steht in der Übersicht von php myadmin...
|
23.04.2013, 18:34:18
|
Anfänger
|
|
Registriert seit: Feb 2013
Alter: 69
Beiträge: 12
|
|
AW: Einfügen von Daten in 2 Tabellen
Zitat:
Zitat von lebuek
Dann muss ich den fk wieder löschen - sonst kann ich die Tabelle nicht löschen -
ist aber garantiert InnoDB - das steht in der Übersicht von php myadmin...
|
Nun habe ich die Tabelle neu erstellt mit folgender Anweisung:
CREATE TABLE besteller (
id_besteller int(4),
nachname varchar(250),
vorname text (150),
ort varchar(250),
strasse varchar(250),
telefon int(50),
email varchar(50),
PRIMARY KEY (id_besteller)
)
ENGINE=InnoDB;
|
23.04.2013, 20:16:43
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Einfügen von Daten in 2 Tabellen
Zitat:
Zitat von Handbuch
[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
Für Fremdschlüsseldefinitionen gelten folgende Bedingungen:
Beide Tabellen müssen InnoDB-Tabellen sein und dürfen keine TEMPORARY-Tabellen sein.
In der referenzierenden Tabelle muss ein Index bestehen, in dem die Fremdschlüsselspalten als erste Spalten in derselben Reihenfolge aufgeführt sind. Ein solcher Index wird automatisch auf der referenzierenden Tabelle angelegt, wenn er noch nicht existiert.
In der referenzierten Tabelle muss ein Index bestehen, in dem die referenzierten Spalten als erste Spalten in derselben Reihenfolge aufgeführt sind.
Index-Präfixe auf Fremdschlüsselspalten werden nicht unterstützt. Dies hat unter anderem zur Folge, dass BLOB- und TEXT-Spalten nicht in einen Fremdschlüssel eingebunden werden können, da Indizes auf diesen Spalten immer ein Längenpräfix haben müssen.
InnoDB weist jede INSERT- oder UPDATE-Operation zurück, die versucht, einen Fremdschlüsselwert in einer Kindtabelle anzulegen, wenn kein passender Schlüsselwert in der Elterntabelle vorhanden ist. Was InnoDB mit einer INSERT- oder UPDATE-Operation anfängt, die versucht, in der Elterntabelle einen Schlüsselwert zu ändern oder zu löschen, zu dem in der Kindtabelle passende Zeilen vorhanden sind, hängt davon ab, welche Referenzaktion in den Teilklauseln ON UPDATE und ON DELETE der FOREIGN KEY-Klausel angegeben ist. Wenn der Benutzer versucht, in der Elterntabelle eine Zeile zu ändern oder zu löschen, zu der in der Kindtabelle eine oder mehr passende Zeilen vorhanden sind, bietet InnoDB fünf mögliche Optionen:
CASCADE: Bei Löschung/Änderung einer Zeile der Elterntabelle werden automatisch die zugehörigen Zeilen der Kindtabelle auch gelöscht oder geändert. Es gibt sowohl ON DELETE CASCADE als auch ON UPDATE CASCADE. Zwischen zwei Tabellen sollten Sie bitte nicht mehrere ON UPDATE CASCADE-Klauseln definieren, die auf derselben Spalte der Eltern- oder Kindtabelle arbeiten.
SET NULL: Bei Löschung/Änderung einer Zeile der Elterntabelle werden automatisch die zugehörigen Fremdschlüsselspalten der Kindtabelle auf NULL gesetzt. Das gilt nur, wenn die Fremdschlüsselspalten nicht als NOT NULL definiert sind. Sowohl ON DELETE SET NULL als auch ON UPDATE SET NULL wird unterstützt.
NO ACTION: Im Standard-SQL bedeutet NO ACTION tatsächlich keine Aktion in dem Sinne, dass jeder Versuch, einen Primärschlüssel zu löschen oder zu ändern, unterbunden wird, wenn es dazu einen Fremschlüsselwert in der referenzierten Tabelle gibt. InnoDB weist dann die Lösch- oder Änderungsoperation auf der Elterntabelle zurück.
RESTRICT weist die Lösch- oder Änderungsoperation auf der Elterntabelle zurück. NO ACTION und RESTRICT sind dasselbe wie ein Auslassen der ON DELETE- oder ON UPDATE-Klausel. (Manche Datenbanksysteme kennen verzögerte Prüfungen (deferred checks), zu denen auch NO ACTION gehört. Da in MySQL Fremdschlüssel-Constraints jedoch sofort geprüft werden, sind NO ACTION und RESTRICT hier dasselbe.)
SET DEFAULT: Diese Aktion wird zwar vom Parser anerkannt, aber InnoDB weist Tabellendefinitionen mit ON DELETE SET DEFAULT- oder ON UPDATE SET DEFAULT-Klauseln zurück.
Wenn die CONSTRAINT symbol-Klausel verwendet wird, muss der symbol-Wert in der ganzen Datenbank einzigartig sein. Ist die Klausel nicht angegeben, erstellt InnoDB den Namen automatisch.
|
Da haste noch genug zu tun. ZB. auch mal an TRIGGER denken und an ROLLBACK/COMMIT bezüglich der Fehlerbehandlung.
Die Fremdschlüssel Umsetzung in MNySQL ist sehr dürftig. Da sollte man eigentlich doch mal über Postgresql nachdenken.
|
23.04.2013, 20:57:45
|
Anfänger
|
|
Registriert seit: Feb 2013
Alter: 69
Beiträge: 12
|
|
AW: Einfügen von Daten in 2 Tabellen
Aha - danke!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:12:11 Uhr.
|