Jump to content
php.lv forumi

2 in 1 UPDATE and INSERT


Recommended Posts

ir tabula:

 

id | key1 | key2 | paareejie lauki

 

ieksh key1 un key2 ir unikaalas veertiibas.

 

Taatad , ja atrodas ieraksts , kurš atbilst pēc nodotajiem key1 un key2 , tad attiecīgo ierakstu vajadzētu UPDEITOT ar nodoto info , bet ja taads ieraksts neatrodaas, tad ievieto jaunu ierakstu ar nodoto info.

 

Pagaidaam to daru taisot 2 kveerijus, 1. izselektee datus peec nodotiem key 1 , key2

, tad php paarbauda vai ir atgriezta kaada rindinja, un ja ir atgriezta tad taisa UPDATE vaicaajumu, bet ja nav tad INSERT vaicaajumu.

 

Vai nevar sho izpildiit smalkaak . vienaa vaicaajumaa un, lai nav arii jaaraksta gan UPDATE , GAN INSERT vaicaajums.

Link to comment
Share on other sites

Ja ir 4.1.x MySQLs tad var izmantot ON DUPLICATE KEY fiichu

http://dev.mysql.com/doc/mysql/en/insert.html

 

Proti nodefinē key1 un key2 par unikāliem kejiem un tad

 

INSERT INTO table (key1,key2,lauks) VALUES ('1','2','blabla') ON DUPLICATE KEY UPDATE citslauks=kautkadavertiba;

 

Bet savietojamības nolūkos var tikuntā taisīt divus kverijus, bet drusku viltīgāk nevis vispirms taisīt SELECTU kas locko tabulas un pie aktīvas lietošanas varētu būt bremzīte, bet gan shitaa:

Tāpat nodefinee abus keyus par unique (vai nu paari vai katru atseviskji) un tad taisi:

 

if(!mysql_query("INSERT INTO table SET key1='val',key2='val'... ")) {

mysql_query("UPDATE table SET blabla ... "); }

 

Proti vispirms izpildi insertu ja mysqls deelj eksisteejoshiem indeksies nevarees to uztaisiit atgrieziiis false un izpildiisies updeits.

Link to comment
Share on other sites

Ja tiek lietots MySQL (citoes SQL nezinu vai ir tāds REPLACE) un key1, key2 ir definēti kā PRIMARY KEY vai UNIQUE indekss, tad var iztikt ar vienu:

REPLACE INTO table (key1, key2, data, ...) VALUES ('$key1', '$key2', '$data', ...)

Edited by bubu
Link to comment
Share on other sites

×
×
  • Create New...