PHP PDO - SQL Insert pouze když záznam neexistuje

Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #15 kdy: 19. 03. 2019, 19:17:26 »
Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.

Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.

Unikátní index splňuje vše, co je zmíněno.

Jak?


Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #16 kdy: 20. 03. 2019, 07:04:56 »
Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.

Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.

Unikátní index splňuje vše, co je zmíněno.

Jak?

Tím, že neumožní duplicitní záznam vložit ani externím nástrojem.

Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #17 kdy: 21. 03. 2019, 00:31:14 »
Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.

Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.

Unikátní index splňuje vše, co je zmíněno.

Jak?

Tím, že neumožní duplicitní záznam vložit ani externím nástrojem.

Takže tam pak budeš z aplikace insertovat záznamy s existujícím id a je podle tebe vše v pořádku?

Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #18 kdy: 21. 03. 2019, 08:37:13 »
Ak spravne nastaveny primary alebo uniqe key, tak vsetko vyriesi toto https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #19 kdy: 21. 03. 2019, 09:28:46 »
Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.

Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.

Unikátní index splňuje vše, co je zmíněno.

Jak?

Tím, že neumožní duplicitní záznam vložit ani externím nástrojem.

Takže tam pak budeš z aplikace insertovat záznamy s existujícím id a je podle tebe vše v pořádku?

O vkládání duplicitních ID vůbec není řeč. Přečti si původní dotaz.


Re:PHP PDO - SQL Insert pouze když záznam neexistuje
« Odpověď #20 kdy: 21. 03. 2019, 14:04:23 »
Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.

Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.

Unikátní index splňuje vše, co je zmíněno.

Jak?

Tím, že neumožní duplicitní záznam vložit ani externím nástrojem.

Takže tam pak budeš z aplikace insertovat záznamy s existujícím id a je podle tebe vše v pořádku?

O vkládání duplicitních ID vůbec není řeč. Přečti si původní dotaz.

Ok, už to vidím, jemu se ten duplicitní záznam vložil, čímž pádem chápu tvojí reakci. Takže řešení je tam prostě přidat správný unikátní klíč (nejspíš primární) a na straně aplikace použít transakce.