Inser/update
"Petr \"Qaxi\" Klíma"
qaxi na seznam.cz
Úterý Leden 25 13:51:29 CET 2005
Honza Pazdziora wrote:
>On Tue, Jan 25, 2005 at 12:13:37PM +0100, "Petr \"Qaxi\" Klíma" wrote:
>
>
>>Pekny den preji
>>
>>je nejaky trik na nasledujici:
>>mam tabulku passwd:
>>
>>CREATE TABLE passwd (
>> uid integer DEFAULT 0 NOT NULL,
>> username character varying(8) DEFAULT '' NOT NULL,
>> name character varying(30) NOT NULL
>>)
>>
>>chci do ni "synchronizovat" /etc/passwd
>>
>>pomoci sedu si udelam SQL INSERT a .....
>>pokud tam user uz je, tak to vyhodi chybu ...
>>
>>
>
>Tak udelejte
>
> insert into passwd select ( ..... ) from dual
> where not exists ( select 1 from passwd where username = ... )]
>
tohle mi ale neosetri "nove" uzivatel (UPDATE)... ,ze?
>tohle mi ale neosetri "nove" uzivatel ... ,ze
>
>nebo where uid = ... . Pripadne to obalit begin a end a zachytnout
>vyjimku, kterou Vam server vrati.
>
>
>
to bych to ale asi musel zaregistrovat jako proceduru ...., ze
tohle mi nechodi ...
#ERROR: parser: parse error at or near "select" at character 12
begin
select * from passwd where uid='2011' AND username='benes';
if not exist
then
insert into passwd ( uid, username ) VALUES ('2011','benes');
else
update passwd set uid='2011', username='benes' ;
endif
end
#(Duration 0:00.10)
SORRY
ja myslel (vim, ze se to nema delat ...), ze kdyz mam nejake zkusenosti
s MySQL tak budu schopen PSQL pouzivat hned a .....
>>pokuk udelam SQL UPDATE tak to zas hlasi chybu u "novych" uzivatelu
>>
>>
>
>Update by na neexistujicim zaznamu zadnou chybu hlasit nemel, proste
>jenom rekne, ze zaktualizoval 0 zaznamu. Co mate za databazovy stroj?
>
>
>
to byla moje spatne formulace .... ano nahlasi to UPDATE 0
>>vim, ze bych mohl soustit insert a update za sebou a mit pokoj, ale ja
>>bych ve scriptu potreboval kontrolovat UNIQ na username a to mi ta
>>zaplava chyb neumozni
>>
>>
>
>Otazka je, jestli nechcete pouzit neco jineho nez posilat to na stdin
>nejakeho rakdoveho klienta (tusim, ze to je to co delate z te zminky
>o sedu). Napriklad v Perlu si v DBI muzete osetrit uplne cokoli vcetne
>toho, jestli Vam update neco nasel nebo ne a podle toho delat nebo
>nedelat insert. Jinak kontrola UNIQ na username se typicky dela pomoci
>unique klice.
>
>
ano UNIQ klic mam ...
Další informace o konferenci Test