MySQL - INSERT INTO IF NOT EXISTS

Programovacie jazyky, rady, poradňa...
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa m_pro_m »

Čafte..

potreboval by som zistiť, ako správne použiť IF NOT EXISTS v súvislosti s INSERT INTO. Trocha som googlil ale žiadne už riešené zadanie som nenašiel.. niekde písali o REPLACE, niekde o IGNORE a niekde dokonca cez UPDATE -> zmenilo sa niečo ? -> INSERT INTO

Ide mi asi o toto :
Mám funkciu, ktorou sa do tabuľky vloží riadok s id. No chcem, aby aj po 100 refreshoch tohto skriptu sa tam zapísal ten riadok s ID(tým konkrétnym) iba raz.

Tak ak viete niekto ako to spraviť, popr ako použiť tie iné ?funkcie? ako REPLACE, IGNORE, buďte taký dobrý a napíšte nejaký príklad alebo dajte link na tutoriál :)

Ďakujem
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

REPLACE INTO `tabulka` SET `stlpec` = 'hodnota'

Kód: Vybrať všetko

INSERT IGNORE INTO `tabulka` SET `stlpec` = 'hodnota'

Kód: Vybrať všetko

INSERT INTO tabulka (a) VALUES (1)  ON DUPLICATE KEY UPDATE a=a+1;
prvý prípad prepíše záznam. Druhý prípad sa pokúsi vložiť a potlačí chybové hlásenie ak sa nepodarí a tretí sa používa ak potrebuješ aj update v prípade existencie
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa m_pro_m »

takže zrejme využijem prvý prípad.. a on zapíše tie dáta ak ich nenájde ?
Alebo to iba prepíše ak tam sú ?

A nič také ako IF NOT EXISTS sa ani nepoužíva ?



-- nejdem zakladať novú tému :
chcem sa spýtať, dajú sa z PHP funkcie vraciať 2 hodnoty ? (myslím return)
Mne píše syntax error keď to dám takto

Kód: Vybrať všetko

return $a, $b;
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa weroro »

To sa dá v nejakom jazyku zavolať vo funkcii return viac ako jedenkrát? (neviem, pýtam sa)
return normálne vráti hodnotu a preruší vykonávanie funkcie, takže ak by si tam mal

Kód: Vybrať všetko

return $a, $b;
čo je vlastne (asi)

Kód: Vybrať všetko

return $a;
return $b;
tak sa vykoná iba

Kód: Vybrať všetko

return $a;
preruší sa funkcia a k

Kód: Vybrať všetko

return $b
sa ani nedostane.

Takto to nestačí?

Kód: Vybrať všetko

$c = $a . ' daky oddelovac ' . $b;
return $c;
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa audiotrack »

weroro, keď už tak to vrátiť ako objekt alebo pole, a nie cez oddelovač

Kód: Vybrať všetko

$return->a = $a;
$return->b = $b;
return $return
alebo

Kód: Vybrať všetko

$return["a"] = $a;
$return["b"] = $b;
return $return
a k tej prvej otázke: nič ako "if not exists" neexistuje. Overovanie či existuje je len pre vytváranie tabuliek. Replace záznam prepíše ak existuje, a vloží nový ak neexistuje
m_pro_m
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 268
Registrovaný: 05 jún 2009, 20:42

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa m_pro_m »

okej.. díky za všetky odpovede :)

// predsa len je tu nejaká tá chybička.. po používaní som zistil, že ono tie zápisy vytvára aj keď tam už sú :/
ale našiel som nejaký kód ako to spraviť link
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: MySQL - INSERT INTO IF NOT EXISTS

Príspevok od používateľa harrison314 »

weroro napísal:To sa dá v nejakom jazyku zavolať vo funkcii return viac ako jedenkrát? (neviem, pýtam sa)
Ano da, vetcinou sa to vyuziva v generatoroch ( asi ich maju aj python,ruby,lua), v C# sa daju volat rekurzivne
C#

Kód: Vybrať všetko

IEnumerable<ulong> MocninyDvojky() // nekonecny zoznbam mocnin dvoch
{
  ulong c = 1;
  for(;;)
  {
    yield return c;
    c*=2;
  }
}
takisto mozes vracat viac prvkov naraz ( pri jzykoch ktore podporuju viacnasobne priradenia), alebo vracat ako n-tice.

lua

Kód: Vybrať všetko

 function daco(a,b)
   return a+b,a-b
 end

m,n = daco(5,6)
haskell - vie vracat n-tice

Kód: Vybrať všetko

 daco :: Int -> Int -> (Int,Int)
 daco x y = (x+y,x-y)

-- este dalsi nekonecny zoznam druhych mocnin
sqarts = 1:[ 2*i | i<-squarts ]
Napísať odpoveď