Queries in 2 databases uitvoeren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Joren de Wit

Joren de Wit

11/04/2008 14:48:00
Quote Anchor link
En wat is er niet duidelijk aan eerder gegeven antwoorden? Verschillende databases dus verschillende queries, simple as that!

Hoe jij dat verder in PHP oplost is natuurlijk een andere zaak. Je kunt prima een functie schrijven voor het selecteren van gegevens die maar 1 database gebruikt en een andere functie voor het updaten/invoegen van gegevens die beide databases (en dus 2 queries) gebruikt.

Verder snap ik dan nog steeds het nut van de tweede (dubbele) database niet. Wat zie je daar in hemelsnaam voor voordeel in?
 
PHP hulp

PHP hulp

28/04/2024 05:58:39
 
Frank -

Frank -

11/04/2008 14:55:00
Quote Anchor link
Waarom gebruik je geen trigger? Zet een trigger op de tabel in database 1 die bij een INSERT, UPDATE of DELETE automatisch database 2 bijwerkt. Dat hoef je dan niet vanuit PHP te gaan regelen, het is de database die daar voor zorgt. Beide databases moeten wel op dezelfde server draaien, anders zal het niet lukken.

Voorbeeldje:

DB 1, test:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE som_1 (
  id int(11) NOT NULL auto_increment,
  totaal int(11) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DB 2, testje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE som_2 (
  id int(11) NOT NULL auto_increment,
  totaal int(11) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


Trigger in DB 1 op tabel som_1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TRIGGER
  test.totaal
AFTER INSERT ON
  test.som_1
FOR EACH ROW
  INSERT INTO
    testje.som_2 (
      totaal
    )
  VALUES(
    NEW.totaal
  );

Werkt prima en je bent niet afhankelijk van een PHP-scriptje.

Edit: Vergeet de UPDATE en DELETE-triggers niet, die zul je ook moeten aanmaken.

Daarnaast blijft het een twijfelachtige situatie, het is vragen om problemen. Een goed datamodel voorkomt een hele hoop ellende.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Kevin Tuns

Kevin Tuns

11/04/2008 15:41:00
Quote Anchor link
pgFrank schreef op 11.04.2008 14:55:
Waarom gebruik je geen trigger? Zet een trigger op de tabel in database 1 die bij een INSERT, UPDATE of DELETE automatisch database 2 bijwerkt. Dat hoef je dan niet vanuit PHP te gaan regelen, het is de database die daar voor zorgt. Beide databases moeten wel op dezelfde server draaien, anders zal het niet lukken.

Voorbeeldje:

DB 1, test:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE som_1 (
  id int(11) NOT NULL auto_increment,
  totaal int(11) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DB 2, testje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE som_2 (
  id int(11) NOT NULL auto_increment,
  totaal int(11) NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


Trigger in DB 1 op tabel som_1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TRIGGER
  test.totaal
AFTER INSERT ON
  test.som_1
FOR EACH ROW
  INSERT INTO
    testje.som_2 (
      totaal
    )
  VALUES(
    NEW.totaal
  );

Werkt prima en je bent niet afhankelijk van een PHP-scriptje.

Edit: Vergeet de UPDATE en DELETE-triggers niet, die zul je ook moeten aanmaken.

Daarnaast blijft het een twijfelachtige situatie, het is vragen om problemen. Een goed datamodel voorkomt een hele hoop ellende.


Kijk met zo'n antwoord ben ik nou blij. Hij geeft me de oplossing die hij het beste vindt en ik op dit moment ook en tevens geeft hij daarna pas commentaar. Zoals ik al eerder heb gezegd maakt het niet uit waar ik het voor ga gebruiken, ik kan je wel vertellen dat het niks te maken heeft met mijn database model aangezien die gewoon goed is en het niks te maken heeft met data uit 2 databases te vissen..

Tevens werkt dit in MySql of moet ik daar een ander soort database voor draaien? En zo ja, werkt dit ook als iemand iets via phpmyadmin invoegt(oftewel zet hij het dan ook in beide databases?)
 
Frank -

Frank -

11/04/2008 15:48:00
Quote Anchor link
Dit werkt vanaf MySQL 5.0 (die is al járen oud, zul je dus wel over beschikken), andere databases hebben dit al veel langer in huis. MySQL zuigt aan alle kanten en is volgens de handleiding ook volkomen onbetrouwbaar, alleen een goede dba die geen fouten maakt, kan hier data redelijk veilig in beheren. MySQL kan dat (wil dat) zelf niet doen.

In PMA klop je in het SQL-tabblad gewoon de code in om een trigger aan te maken en klaar ben je. Het aanmaken van een trigger doe je gewoon met een stuk SQL, niks bijzonders dus.

Jouw datamodel is wel van twijfelachtige kwaliteit, het kan vrijwel onmogelijk correct zijn dat data over 2 databases is uitgesmeerd. Dataintegriteit is dan namelijk onmogelijk te garanderen. Maar ja, dat kan MySQL toch al niet garanderen, dus wat dat betreft zit je al tot over je oren in de shit... Sterkte!
 
Kevin Tuns

Kevin Tuns

11/04/2008 15:52:00
Quote Anchor link
pgFrank schreef op 11.04.2008 15:48:
Dit werkt vanaf MySQL 5.0 (die is al járen oud, zul je dus wel over beschikken), andere databases hebben dit al veel langer in huis. MySQL zuigt aan alle kanten en is volgens de handleiding ook volkomen onbetrouwbaar, alleen een goede dba die geen fouten maakt, kan hier data redelijk veilig in beheren. MySQL kan dat (wil dat) zelf niet doen.

In PMA klop je in het SQL-tabblad gewoon de code in om een trigger aan te maken en klaar ben je. Het aanmaken van een trigger doe je gewoon met een stuk SQL, niks bijzonders dus.

Jouw datamodel is wel van twijfelachtige kwaliteit, het kan vrijwel onmogelijk correct zijn dat data over 2 databases is uitgesmeerd. Dataintegriteit is dan namelijk onmogelijk te garanderen. Maar ja, dat kan MySQL toch al niet garanderen, dus wat dat betreft zit je al tot over je oren in de shit... Sterkte!


lol, bedankt voor je reactie. Ja, zelf zat ik ook al na te denken om iets anders als mysql te gaan gebruiken, maar ik geloof dat phpbb niet met een andere werkt en zo wel, kan je de database dan omzetten zodat het met een andere werkt?

Achja, en hoe zal ik anders 2 identieke databases naast elkaar laten draaien?
 
Frank -

Frank -

11/04/2008 16:11:00
Quote Anchor link
PHPbb draait op MySQL, PostgreSQL, SQL Server, Microsoft Access en met wat aanpassingen ook op Oracle. Keuze genoeg dus.
 
Kevin Tuns

Kevin Tuns

11/04/2008 16:17:00
Quote Anchor link
dat snap ik, maar is een bestaande mysql database om te zetten naar een PostgreSQL database zonder inhoud verlies?
 
Frank -

Frank -

11/04/2008 16:36:00
Quote Anchor link
Ja hoor, dat kan. PostgreSQL heeft daar zelfs tools voor in huis. Maar voordat je hier aan begint, ga eerst eens testen met pgSQL om er kennis mee te maken. Het is nét even iets anders. Zie ook de tutorial Aftrappen met PostgreSQL.

En voordat je gaat migreren, ga je natuurlijk eerst testen. Maar dat is logisch.

Ps. Vergeet de handleiding van PHPbb niet, daar staat waarschijnlijk ook al in hoe je e.e.a. moet doen.
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.