Inser/update
Honza Pazdziora
adelton na fi.muni.cz
Úterý Leden 25 12:31:12 CET 2005
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 = ... )
nebo where uid = ... . Pripadne to obalit begin a end a zachytnout
vyjimku, kterou Vam server vrati.
> 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?
> 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.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Test