Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

1 Zum Seitenanfang

Dienstag, 3. Juni 2008, 19:24

MySQL Insert view schlägt fehl

Hi, ich benutze die 5.0.22 und habe ein View erstellt:

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)

 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

2 Zum Seitenanfang

Dienstag, 3. Juni 2008, 19:41

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.

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jperl« (3. Juni 2008, 19:46)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

3 Zum Seitenanfang

Mittwoch, 4. Juni 2008, 08:40

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:

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)

 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

4 Zum Seitenanfang

Mittwoch, 4. Juni 2008, 09:31

oder postgreSQL ;)
 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

5 Zum Seitenanfang

Mittwoch, 4. Juni 2008, 13:33

also ich glaube das geht wohl generell nicht.

@ospx
wenn es mysql nicht kann, dann glaube ich nicht, dass postgresql es kann :P

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »jperl« (4. Juni 2008, 13:36)

 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

6 Zum Seitenanfang

Mittwoch, 4. Juni 2008, 22: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

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ospx« (4. Juni 2008, 23:29)

 

jperl

Super Moderator

Dabei seit: 09.04.2003

Beiträge: 3 453

 

7 Zum Seitenanfang

Mittwoch, 4. Juni 2008, 23:38

@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
Konfuzius [chinesischer Philosoph (551 - 479 v. Chr.)]
Das Entscheidende am Wissen ist, daß man es beherzigt und anwendet.
 

ospx

Kaiser

Dabei seit: 11.11.2006

Beiträge: 1 131

 

8 Zum Seitenanfang

Donnerstag, 5. Juni 2008, 00:12

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.
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

9 Zum Seitenanfang

Donnerstag, 5. Juni 2008, 08:16

Respekt

Respekt, ihr beide habt einen super umgangston.
Ihr vereint Kritik und Selbstkritik weitaus besser als ich.
Sehr Vorbildlich, trotz meinem herzlosen Startposting.
Das macht richtig Spaß dieses Forum.

Super!
 

Ähnliche Themen