[MYSQL] Insert doen zoals een view werkt ?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben begonnen met het gebruik van views aangezien ik een aantal OpenSource pakketten gebruik waar ik bepaalde tabellen in de databases eigenlijk maar 1x hoef te gebruiken.

Ik heb bijvoorbeeld 4 verschillende sites met dezelfde userbase maar andere forums, om een user niet 4x te laten registreren maak ik gebruik van views voor de user naar de "main database" die de gebruikers ook beheert.

Ik loop alleen tegen het feit aan dat een view opzich welk handig is om die data uit te lezen maar ik wil eigenlijk voor een registratie van een gebruiker niet redirecten naar de site waar de main-DB achter draait. Ik denk hier dus aan een methode welke werkt als een view op een tabel maar dan voor een insert van een nieuw record.

Ik ben al wat aan het stoeien geweest en heb wat IRC mannen geraadpleegd maar het is wat onduidelijk om te te leggen blijkt.

Een view werkt dus als:

Ik query tabel1 van DB2 waar de view de data uit tabel1 van DB1 haalt.

Ik wil dus graag een insert doen op tabel1 van DB2 welke uiteindelijk geinsert wordt in tabel1 van DB1.


De reden waarom ik dit zo moet doen is omdat ik dit codewise niet iedere keer kan aan gaan passen. Een update op de database is vrijwel uitgesloten op dat front dus wil ik het op deze manier doen indien mogelijk.

Welke richting moet ik zoeken om dit mogelijk te maken ?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je loopt hier toch al lang genoeg rond om Waar hoort mijn topic? te hebben gelezen, niet?

SEA >> PRG

Verder loop je hier ook lang genoeg rond om te weten wat we verwachten van een TS. Zoals: waarom kon je niet gewoon vinden op Google wat je zoekt en waarom voldeed dat niet?

Dan loop je hier ook nog eens lang genoeg rond om te weten dat we graag relevante code zien (zoals je view). Waar is die? Waarom zien we niet wat je geprobeerd hebt en waarom mis ik dan bijvoorbeeld de foutmelding die je daarbij zou hebben gekregen?

En waarom wil je per se een insert op een view doen en niet gewoon op databasenaam.tabelnaam (a.k.a. fully qualified name)?

[ Voor 71% gewijzigd door RobIII op 05-04-2010 14:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
RobIII schreef op maandag 05 april 2010 @ 14:09:
Je loopt hier toch al lang genoeg rond om Waar hoort mijn topic? te hebben gelezen, niet?

SEA >> PRG
Ik twijfel hier zovaak aan, wellicht een betere utileg ?.. nee serieus ik zoek vaak en bekijk topics in de subfora en vond die meer DB-layer dan PRG
Verder loop je hier ook lang genoeg rond om te weten wat we verwachten van een TS. Zoals: waarom kon je niet gewoon vinden op Google wat je zoekt en waarom voldeed dat niet?
Ik heb op die termen gezocht, ik kom er niet geheel uit om me een goed beeld te vormen. Ik ben wel testende natuurlijk maar het is wat "vaag"hoewel de mysql docs opzich goed zijn.
Dan loop je hier ook nog eens lang genoeg rond om te weten dat we graag relevante code zien (zoals je view). Waar is die? Waarom zien we niet wat je geprobeerd hebt en waarom mis ik dan bijvoorbeeld de foutmelding die je daarbij zou hebben gekregen?
MIjn eerste vraag is eigenlijk... ben ik niet iets aan het proberen dat niet kan ? Zal niet de eerste keer zijn al tweaker :+
En waarom wil je per se een insert op een view doen en niet gewoon op databasenaam.tabelnaam (a.k.a. fully qualified name)?
Zoals ik aangaf moet ik dan iedere keer codewise de zaken aan gaan passen uit een community project, bijvoorbeeld je hebt 4x phpBB geinstalleerd en wil alleen de users uit een DB halen, dan kijk je wel uit met het wijzigen van de query code dmv fully qualified.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 05 april 2010 @ 14:19:
Ik twijfel hier zovaak aan, wellicht een betere utileg ?.. nee serieus ik zoek vaak en bekijk topics in de subfora en vond die meer DB-layer dan PRG
Dan hoor ik graag wat er onduidelijk is; het is het gros van de bezoekers namelijk schijnbaar wel duidelijk. Ik zal niet uitsluiten dat er plek is voor verbetering dus ik verneem graag waar die onduidelijkheden dan staan. Zolang het bij deze algemene "het is onduidelijk" opmerkingen blijft en je niet aangeeft wat er aan schort schuif ik het op het niet (of half) lezen van de zaken waar je op gewezen bent en niet op onduidelijkheid daarvan.
Verwijderd schreef op maandag 05 april 2010 @ 14:19:
Ik heb op die termen gezocht, ik kom er niet geheel uit om me een goed beeld te vormen.
Geef dan aan waar je niet uit komt :?
Verwijderd schreef op maandag 05 april 2010 @ 14:19:
Ik ben wel testende natuurlijk maar het is wat "vaag"hoewel de mysql docs opzich goed zijn.
Het is "vaag" maar "opzich goed" :? Ja, nou weet ik wat je bedoelt! :X (Mocht je het sarcasme missen: ik heb nog steeds geen benul waar je het over hebt).
Verwijderd schreef op maandag 05 april 2010 @ 14:19:
MIjn eerste vraag is eigenlijk... ben ik niet iets aan het proberen dat niet kan ?
Mijn eerste repliek: Waarom probeer je het niet gewoon :? Dat was 10x sneller geweest dan een topic openen.
Mijn tweede repliek: als je kijkt op de link die ik gaf zie je al meteen (op de zoekresultaten pagina van Google dus!) staan:
Some views are updatable — that is, you can perform INSERT and DELETE ...
(2e hit). Komaan. Kijk eens verder dan je neus lang is.
En laat ik je volgende vraag maar voor zijn: Lees! Er staat SOME. Het is nogal afhankelijk van hoe je view in elkaar zit of een view updatable is. Maar, again, zonder relevante code (je view) kunnen we hier dus niets over zeggen.
Verwijderd schreef op maandag 05 april 2010 @ 14:19:
Zoals ik aangaf moet ik dan iedere keer codewise de zaken aan gaan passen uit een community project, bijvoorbeeld je hebt 4x phpBB geinstalleerd en wil alleen de users uit een DB halen, dan kijk je wel uit met het wijzigen van de query code dmv fully qualified.
En dat hoeft bij een view niet :? Die view zal toch ook op de hoogte gebracht moeten worden van wéér een DB erbij :? En als je die query in code bouwt dan is die fully qualified name natuurlijk makkelijk in de query op te nemen. Ik zie werkelijk waar het hele probleem niet. En zelfs het aanpassen van code is niet nodig als je ergens die verschillende DB's (lees: namen) in een tabel mikkert (of in je config zet ofzo) waardoor je de query dynamisch kunt bouwen met voorgedefinieerde DB's.

Een view is niets meer dan een "virtuele tabel" waarvan de daadwerkelijke gegevens uit 1 of meerdere onderliggende "werkelijke" tabellen gehaald worden. Zolang het RDBMS nog kan herleiden wat je nou eigenlijk probeert te doen als je een insert doet (aka het RDBMS kan herleiden naar welke fysieke tabel de gegevens geschreven moeten worden) is een view updatable. Is je view (bijv.) een union van 4 users tabellen uit 4 fora dan zal het RDBMS natuurlijk niet weten in welk van de 4 onderliggende tabellen je de gegevens wil wegschrijven bij een insert en dus is de view niet "updatable" en dus zul je naar een query moeten schrijven die specificeert welke tabel (in welke DB) je wil updaten. En dan zul je dus een FQ tabelnaam moeten gebruiken, of voor die query de juiste DB "USE"-en of connecten met het RDBMS met het juiste default schema of iets anders waardoor het RDBMS weet welke `user` tabel je wil updaten. Een RDBMS is helaas nog niet helderziend. Net zo min als wij dat zijn overigens.

[ Voor 24% gewijzigd door RobIII op 05-04-2010 18:08 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij