MySql continue handler?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • SaphuA
  • Registratie: September 2005
  • Laatst online: 10-09 22:00
.

[ Voor 99% gewijzigd door SaphuA op 01-02-2022 17:16 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SaphuA schreef op vrijdag 28 november 2008 @ 15:11:
Mijn vraag is dus: is dit op te lossen en hoe?
Ja. Gewoon niet aan symptoombestrijding doen en het daadwerkelijke probleem aanpakken ;) Die constraints zijn niet voor niets opgenomen in de DB en die beschermen je dus juist tegen dat soort zaken. Ga je daar willens en wetens omheen werken dan werk je jezelf alleen maar in de nesten (of die constraints hadden er niet moeten zijn in the first place).

[ Voor 35% gewijzigd door RobIII op 28-11-2008 15: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!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 27-09 16:29

Johnny

ondergewaardeerde internetguru

Het is heel simpel op te lossen, gewoon INSERT IGNORE INTO gebruiken.
You can use REPLACE instead of INSERT to overwrite old rows. REPLACE is the counterpart to INSERT IGNORE in the treatment of new rows that contain unique key values that duplicate old rows: The new rows are used to replace the old rows rather than being discarded. See Section 12.2.7, “REPLACE Syntax”.
http://dev.mysql.com/doc/refman/5.0/en/insert.html

[ Voor 71% gewijzigd door Johnny op 28-11-2008 15:17 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Johnny schreef op vrijdag 28 november 2008 @ 15:16:
Het is heel simpel op te lossen, gewoon INSERT IGNORE INTO gebruiken.
En dat is precies waarom ik zo'n hekel aan MySQL heb (los van andere vaagheden zoals GROUP BY die maar wat doet en filesorts voor elke scheet). Dit moet je niet eens willen en ik vraag me serieus af waarom zo'n feature uberhaupt ingebakken zit :X
If you use the IGNORE keyword, errors that occur while executing the INSERT statement are treated as warnings instead. For example, without IGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEY value in the table causes a duplicate-key error and the statement is aborted. With IGNORE, the row still is not inserted, but no error is issued. Data conversions that would trigger errors abort the statement if IGNORE is not specified. With IGNORE, invalid values are adjusted to the closest values and inserted; warnings are produced but the statement does not abort. You can determine with the mysql_info() C API function how many rows were actually inserted into the table.
On error resume next lalalala :')

[ Voor 47% gewijzigd door RobIII op 28-11-2008 15:19 ]

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!

  • SaphuA
  • Registratie: September 2005
  • Laatst online: 10-09 22:00
.

[ Voor 99% gewijzigd door SaphuA op 01-02-2022 17:16 ]


Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 11:54

Kettrick

Rantmeister!

SaphuA schreef op vrijdag 28 november 2008 @ 15:33:
Geweldig, precies wat ik nodig heb.
-O- ;(
Ik geloof best dat iets dergelijks niet netjes is, maar het is altijd beter dan voor elk item (een behoorlijk aantal) eerst een SELECT statement te moeten uitvoeren om te kijken of deze al in de db zit.
niet netjes in volgens mij een understatement, je zou bijvoorbeeld de oude set in het geheel op kunnen halen en tegen de nieuwe set aan kunnen houden. En zo zijn er nog genoeg andere oplossingen te bedenken :)
En helaas heb ik geen invloed op de aangeleverde data.
Nee, maar wel wat je er mee doet, dergelijke hacks zetten krijg je altijd ellende mee, de vraag is alleen wanneer ;)
Pagina: 1