[PHP/MSSQL]Teller+1 indien aanwezig anders insert*

Pagina: 1
Acties:

  • B2
  • Registratie: April 2000
  • Laatst online: 09:54

B2

wa' seggie?

Topicstarter
Voor m'n storingdatabase (ja alweer) wil ik het aantal keer dat een storing voorkomt tellen.
Even goed uitgelegd: Ik pak strings uit een text file welke wordt aangemaakt door een monitoring tool. Na wat bewerkingen op de strings, zet ik deze in de database.
Nu wil ik dus, dat wanneer een storing al voorkomt deze niet opnieuw in de database wordt gezet, maar weer actief wordt gemaakt (actief betekend een bepaald veld weer op 0.)

Hoe kan ik nu bij het invoeren van een record checken of deze al bestaat, en zo nodig dus een Update query uitvoerd?

De code die ik nu gebruik om een storing in te voeren:
PHP:
1
<?  if ( stristr( $storing, "FAILED" ) ) {      $qid = db_query("       INSERT INTO storingen (name, description, o_timestamp, active, inige)      VALUES ('$name','$description', getdate(), '$active', '$inige')     ");     ..........?>

$active is dus de waarde om een storing weer actief te maken.

edit:
Shit titel niet afgemaakt....uuhm modje?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dat hangt er natuurlijk vanaf...

Kijk: je zal voor jezelf moeten bepalen wanneer een storing al in de database staat. Is dat wanneer de naam hetzelfde is? Heb je er codes voor? Dat is het eerste wat je moet bedenken.

Hiervoor is het wel handig als je ook even het "formaat" van een storing uit zo'n logfile laat zien.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

wat wil je voor titel?
edit je post maar ff en zet um daarin
dan haal ik deze reply daarna gewoon weg ;)

Doet iets met Cloud (MS/IBM)


Verwijderd

Mischien met een select ... where nieuw=bestaand

als er geen result is invoeren en anders updaten.
dat lijkt me het simpelst.

[edit]
eerst update where nieuw=bestaand doen kan ook.
als er dan geen affected_rows zijn kun je alsnog invoeren. kan performance winst opleveren als er vaker geupdate word dan ingevoerd....

  • Burat
  • Registratie: Oktober 1999
  • Niet online

Burat

bos wortels

Ik weet niet wat allemaal kan met MSSQL, maar waarschijnlijk is het het makkelijkst om (nadat je zoals mensen hierboven al aangaven eerst voor jezelf criteria hebt opgesteld voor wat 'bestaand' is) een SELECT query te doen en dan als er een resultaat is die row updaten en anders inserten... Vrij voor de hand liggend dus.

Homepage | Me @ T.net | Having fun @ Procurios | Collega's gezocht: Webontwikkelaar PHP


  • B2
  • Registratie: April 2000
  • Laatst online: 09:54

B2

wa' seggie?

Topicstarter
Nah ok, ik ga selecteren op de naam die is dus in de database zet ($name in bovenstaand stukje)
Dat is een string van 3 waardes uit een array.
Dus bv
code:
1
LNR CRC 1 FAILED

Dan pak ik LNR CRC 1.

Ik heb het structuur wel zo'n beetje in me hoofd zitten, (kijk of naam er is, zo ja zet active op 1 etc.) alleen de code zie ik nog even niet.

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Count(kolom) > 0 dan update anders insert.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

supergrover>

Je moet een definitie zien te verzinnen van
• hoe het in het textbestand staat
• hoe het in de database staat
Bijvoorbeeld
bestand:
[3 character code][spatie][3 character code][etc..]
database
eerste 3 characters correspondeert met kolom A
tweede 3 characters correspondeert met kolom B
Wanneer deze 2 al voor komen in db moet kolom C op 0 gezet worden...
dan is de code toch niet zo moeilijk meer :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Compacter is gewoon een update uitproberen, dan het aantal geupdate record opvragen bij de DB, als dat nul is dan insert uitvoeren.
OF
insert uitproberen als dit fout loopt op een unieke index, dan updaten.
Pagina: 1