In een for each loop gebruik ik "INSERT IGNORE INTO" om records toe te voegen.
De records worden toegevoegd in een tabel die een auto increment heeft.
Nu worden er toch dubbele rijen ingevoegd m.i. doordat de autoincrement telkens ophoogd en dus het record als een uniek record ziet. Hoe zou ik dit kunnen oplossen zodat INSERT IGNORE INTO maar 1x een record invoegd?
Ik had even het idee dat je data ging overhevelen van de ene naar de andere tabel, maar dat is met externe data natuurlijk niet het geval.

Wat doe je met het Facebook id als handmatig ingevoerd wordt?

Als dat null is kan je namelijk nog steeds een unique index op die kolom zetten (raar maar waar).
Top! Dat werkt inderdaad. Scheelt me weer code.
Thanks!

[size=xsmall]Toevoeging op 26/07/2014 10:44:19:[/size]

Ger, nog 1 vraagje. Ik gebruik een auto-increment om de records uniek te identificeren. Nu gebruik ik deze ook in mijn url's wat ik eigenlijk niet mooi vind. Daarnaast lijkt het me ook niet wenselijk om die daar te hebben. Wat is de common practice om een uniek id van een record te maken t.b.v. bijv. URL's ? Moet ik de auto increment voor de URL hashen ofzo? Is een hash uniek?
De regel is dat elke tabel een primary key moet hebben.

Een primary key is een unique index met een not null constraint.

Dat men voor een PK een auto_increment (c.q serial - PG - , identity - MSSQL -) moet gebruiken is een veel gemaakte misvatting (men noemt deze niet voor niets surrogate keys). Zo ook dat het maar één kolom mag zijn.

In theorie heb je met elke hash functie kans op collisions, bij bv MD5 is dat 1 op 3.71e+19 (bijna net zo klein als dat ik de hoofdprijs in de staatsloterij win)

Reageren