MySQL Insert view schlägt fehl
Hi, ich benutze die 5.0.22 und habe ein View erstellt:
Soweit so gut, jetzt mache ich ein Insert:
Beim insert wird ein Fehler gefeuert
The target table chatterprof of the INSERT is not updatable
|
|
MySQL-Abfrage(n) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
CREATE ALGORITHM=UNDEFINED DEFINER=`test`@`%` SQL SECURITY DEFINER VIEW `chatterprof` AS select `chatter`.`ChatterID` AS `ChatterID`, `chatter`.`Nick` AS `Nick`, `chatter`.`EMail` AS `EMail`, `chatter`.`MailForFriends` AS `MailForFriends`, `chatter`.`MailForUnfriend` AS `MailForUnfriend`, `chatter`.`Password` AS `Password`, `chatter`.`RoomID` AS `RoomID`, `chatterprofile`.`Like` AS `Like`, `chatterprofile`.`DontLike` AS `DontLike`, `chatterprofile`.`Smoker` AS `Smoker`, `chatterprofile`.`Birthday` AS `Birthday`, `chatterprofile`.`Tele` AS `Tele`, `chatterprofile`.`Address` AS `Address` from (`chatter` left join `chatterprofile` on((`chatter`.`ChatterID` = `chatterprofile`.`ChatterID`))); |
Soweit so gut, jetzt mache ich ein Insert:
|
|
MySQL-Abfrage(n) |
1 2 3 |
INSERT INTO chatterprof (ChatterID, Nick, EMail, MailForFriends, MailForUnfriend,Password, RoomID, chatterprofile.Like, DontLike, Smoker, Birthday, Tele, Address) VALUES (null, 'admin', 'sdf@gmx.net', '1', '1', 'passwort', null, '<bisher nicht ausgefüllt>', '<bisher nicht ausgefüllt>', 'Überzeugter Nichtraucher', '01.01.1980', '017', 'Max Mustermann') |
Beim insert wird ein Fehler gefeuert
The target table chatterprof of the INSERT is not updatable
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nocturne« (3. Juni 2008, 19:25)
hast du dir bereits die bedingungen angeschaut die du verletzen könntest?
auf anhieb sehe ich jetzt mal nichts.
hast du im view alle spalten aus den originaltabellen, die keinen default value haben, enthalten?
jperl
#edit
gerade das hier gefunden. wundert mich jedoch ein wenig.
auf anhieb sehe ich jetzt mal nichts.
hast du im view alle spalten aus den originaltabellen, die keinen default value haben, enthalten?
jperl
#edit
gerade das hier gefunden. wundert mich jedoch ein wenig.
Zitat
Quelle: http://dev.mysql.com/doc/refman/5.0/en/create-view.html
For a multiple-table updatable view, INSERT can work if it inserts into a single table.
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jperl« (3. Juni 2008, 19:46)
For a multiple-table updatable view, INSERT can work if it inserts into a single table.
Meint wohl das das View zwar ein UPDATE verträgt aber bei INSERT's rummuckt.
Die Version 6 von MySQL sagt dazu noch präziser:
Zeit für ein Umstieg auf Oracle..?
EDIT: Auch bei ORACLE: cannot modify more than one base table through a join view!
Meint wohl das das View zwar ein UPDATE verträgt aber bei INSERT's rummuckt.
Die Version 6 von MySQL sagt dazu noch präziser:
Zitat
You cannot insert into multiple tables with a single insert on a view.
Zeit für ein Umstieg auf Oracle..?
EDIT: Auch bei ORACLE: cannot modify more than one base table through a join view!
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »nocturne« (4. Juni 2008, 08:53)
also ich glaube das geht wohl generell nicht.
@ospx
wenn es mysql nicht kann, dann glaube ich nicht, dass postgresql es kann
jperl
@ospx
wenn es mysql nicht kann, dann glaube ich nicht, dass postgresql es kann

jperl
Zitat
PostgreSQL Manual
Currently, views are read only: the system will not allow an insert, update, or delete on a view.
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jperl« (4. Juni 2008, 13:36)
@ jperl
Einspruch Euer Ehren, PostgreSql kann an etlichen Ecken eindeutig mehr, als Mysql, ist näher am SQL -Standart und konsistenter. Sicherlich, postgreSQL wurde nicht so gehypt, wie Mysql und sie haben auch nicht den potenten Partner SUN im Rücken. Die Performance soll wohl auf Kosten der Konsistenz etwas ungünstiger sein. Das liegt aber vorallem in der von Mysql standartmäßig genutzten MYISAMI- Engine begründet. Diese ist vergleichsweise schnell, hat aber ihre argen Probleme, sobald es um komplexe SQL-Ausdrücke, Fremdschlüssel, Transaktionen etc geht.
Die sehr professionelle Datenbank-Engine SAP DB, die irgendwann von SAP für MYSQL zur Verfügung gestellt wurde und in Zusammenarbeit zwischen MYSQL und SAP weiterentwickelte wurde und unter MYSQL den Namen MaxDB erhielt, wurde von SAP wieder zurückgeholt und wurde wieder unter eine restriktive Lizenz gestellt. Damit ist diese Engine wieder raus aus dem Sortiment von Mysql, soweit ich weiß (d.h. die bisherigen Versionen von MaxDb bleiben zwar bestehen, werden aber so nicht mehr unter Mysql weiter entwickelt und in neuen Versionen angeboten.
Sicherlich hat Mysql in den letzten Jahren im Bereich der Funktionalität den Abstand, der zu PostgreSQL bestand, verringern können ( z.B. Einführung von Subqueries, Fremdschlüsselverwaltung, Trigger, Stored Procedures), das sind aber alles Dinge, die PostgreSQL schon wesentlich länger (und auch heute noch) in einem Umfang beherrscht, an den MYSQL nicht heran kommt und wie oben gesagt fällt MaxDb, die dazu wesentlich beigetragen hatte, zukünftig wieder raus.
Es ist zumindest ein eindeutiger Irrtum, zu glauben, PostgreSQL sei Mysql im Sinne der Konsistenz und Funktionalität unterlegen.
Ich bin mir nicht sicher, wie Inserts bei Views unter postgreSQL gehandhabt werden, nehme aber stark an, dass er eben diese Probleme, die er mit MYSQL dabei hat, wahrscheinlich nicht bei PostgreSQL hätte. Genau in diesen speziellen Bereichen ist PostgreSQL Mysql meist weit überlegen.
zum Thema Views und PostgreSQL
Views und UPDATE, INSERT, DELETE
Einspruch Euer Ehren, PostgreSql kann an etlichen Ecken eindeutig mehr, als Mysql, ist näher am SQL -Standart und konsistenter. Sicherlich, postgreSQL wurde nicht so gehypt, wie Mysql und sie haben auch nicht den potenten Partner SUN im Rücken. Die Performance soll wohl auf Kosten der Konsistenz etwas ungünstiger sein. Das liegt aber vorallem in der von Mysql standartmäßig genutzten MYISAMI- Engine begründet. Diese ist vergleichsweise schnell, hat aber ihre argen Probleme, sobald es um komplexe SQL-Ausdrücke, Fremdschlüssel, Transaktionen etc geht.
Die sehr professionelle Datenbank-Engine SAP DB, die irgendwann von SAP für MYSQL zur Verfügung gestellt wurde und in Zusammenarbeit zwischen MYSQL und SAP weiterentwickelte wurde und unter MYSQL den Namen MaxDB erhielt, wurde von SAP wieder zurückgeholt und wurde wieder unter eine restriktive Lizenz gestellt. Damit ist diese Engine wieder raus aus dem Sortiment von Mysql, soweit ich weiß (d.h. die bisherigen Versionen von MaxDb bleiben zwar bestehen, werden aber so nicht mehr unter Mysql weiter entwickelt und in neuen Versionen angeboten.
Sicherlich hat Mysql in den letzten Jahren im Bereich der Funktionalität den Abstand, der zu PostgreSQL bestand, verringern können ( z.B. Einführung von Subqueries, Fremdschlüsselverwaltung, Trigger, Stored Procedures), das sind aber alles Dinge, die PostgreSQL schon wesentlich länger (und auch heute noch) in einem Umfang beherrscht, an den MYSQL nicht heran kommt und wie oben gesagt fällt MaxDb, die dazu wesentlich beigetragen hatte, zukünftig wieder raus.
Es ist zumindest ein eindeutiger Irrtum, zu glauben, PostgreSQL sei Mysql im Sinne der Konsistenz und Funktionalität unterlegen.
Ich bin mir nicht sicher, wie Inserts bei Views unter postgreSQL gehandhabt werden, nehme aber stark an, dass er eben diese Probleme, die er mit MYSQL dabei hat, wahrscheinlich nicht bei PostgreSQL hätte. Genau in diesen speziellen Bereichen ist PostgreSQL Mysql meist weit überlegen.
zum Thema Views und PostgreSQL
Views und UPDATE, INSERT, DELETE
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ospx« (4. Juni 2008, 23:29)
@ospx
danke für diese lehrstunde. da lasse ich mich doch gerne eines besseren belehren.
mir war klar, dass postgresql näher am sql-standard gebaut ist. muss zugeben ich habe mit postgresql erst einmal gearbeitet und mich so zu einem vorschnellen urteil hinreißen lassen.
habe auch nachgeforscht und postgresql hat in punkto features wirklich die nase vorne. hätte ich mir nicht gedacht.
jperl
danke für diese lehrstunde. da lasse ich mich doch gerne eines besseren belehren.
mir war klar, dass postgresql näher am sql-standard gebaut ist. muss zugeben ich habe mit postgresql erst einmal gearbeitet und mich so zu einem vorschnellen urteil hinreißen lassen.
habe auch nachgeforscht und postgresql hat in punkto features wirklich die nase vorne. hätte ich mir nicht gedacht.
jperl
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
Der crack in Sachen SQL bin ich nicht, das weißt du ja. Habe bisher auch noch nicht soviel mit postgreSQL gemacht, als dass ich wirklich einen fundierten Vergleich zwischen den beiden Systemen anstellen könnte. Bei den wenigen Dingen, die ich bisher mit postgreSQL gemacht habe, war ich aber wirklich angenehm überrascht von den Möglichkeiten dieses Systems im Verhältnis zu Mysql.
Ähnliche Themen
-
Datenbanken »-
Speed verbessern
(7. August 2005, 20:10)
-
PHP »-
Einfacher aber sicherer PHP Switch
(25. Oktober 2007, 14:42)
-
PHP »-
PHPMyAdmin
(12. September 2003, 00:41)
-
PHP »-
mysql Abfrage bei Strato schlägt fehl
(19. März 2003, 16:10)
-
Allgemeines Forum »-
FTP-Server?
(27. Oktober 2002, 20:05)


