YapfHoofdpagina | Info | Hulp | FAQ (veelgestelde vragen) | Speciale pagina's | Aanmelden


Printervriendelijke versie | Voorbehoud | Privacybeleid

Insert of update

Uit Yapf


Het komt regelmatig voor dat je bij het opslaan van gegevens in een database moet beslissen of je een nieuw record moet maken, of een bestaand record moet updaten. Dit resulteert meestal in een of andere routine in PHP die die controle gaat uitvoeren.

Met PostgreSQL's Rules systeem kan dat automatisch in de database.

Een RULE kan een query herschrijven op basis van een gegeven. Dat gegeven kan een SQL statement zijn en omdat je in een RULE werkt kan dat statement data gebruiken van het record dat je probeert aan te maken. Via de EXISTS kun je controleren of een record bestaat, dus alles tesamen betekent dat dat je aan de RULE een voorwaarde kunt geven die luidt: als het record dat je hebt opgekregen al bestaat, dan...

In het volgende voorbeeld controleert EXISTS of het record dat is opgegeven al bestaat. Zoja, dan wordt de query herschreven naar een UPDATE query.

  1. CREATE TABLE test (id INT, name CHAR(10), aantal INT);
  2.  
  3. CREATE OR REPLACE RULE rule_insert 
  4. AS
  5.     ON INSERT TO test
  6. WHERE
  7.     EXISTS (SELECT
  8.                         1
  9.                     FROM
  10.                         test
  11.                     WHERE
  12.                         name=NEW.name
  13.                     )
  14. DO INSTEAD
  15.     UPDATE
  16.         test
  17.     SET
  18.         aantal = aantal+1
  19.     WHERE
  20.         name=NEW.name;
  21.  
  22. INSERT INTO test (id, name, aantal) VALUES (1,'kees', 1);
  23.  
  24. SELECT * FROM test;
  25.  id |    name    | aantal 
  26. ----+------------+--------
  27.   1 | kees       |      2
  28. (1 row)

Het enige nadeel van dit voorbeeld is dat je in de functie moet opgeven welke kolommen voor de update in aanmerking komen. Wat je niet invult wordt ook niet geupdate. Als je flexibeler wilt zijn dan zul je een routine in moeten bouwen die zelf uitvist welke kolommen er geupdate moeten worden.

Ontvangen van "http://www.yapf.net/index.php/Insert_of_update"

Deze pagina is 327 maal bekeken. Deze pagina is het laatst bewerkt op 21 dec 2008 om 13:14.


Zoeken

Bladeren
Hoofdpagina
Gebruikersportaal
In het nieuws
Recente wijzigingen
Willekeurige pagina
Hulp
Bewerken
Brontekst bekijken
Hulp bij bewerken
Paginaopties
Overlegpagina
Nieuw kopje
Printervriendelijke versie
Pagina-informatie
Paginageschiedenis
Verwijzingen naar deze pagina
Verwante wijzigingen
Mijn pagina's
Aanmelden / registreren
Speciale pagina’s
Nieuwe pagina's
Bestandslijst
Statistieken
Meer…