From: | Mustafa Yörükoğlu <Mustafa(at)Yorukoglu(dot)name(dot)tr> |
---|---|
To: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: satırı klonlamak, |
Date: | 2006-03-10 13:30:44 |
Message-ID: | 44117F84.7010805@Yorukoglu.name.tr |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Bizim de ne zamandır ihtiyacımız vardı böle bir şeye (çözüme), sayenizde
oldu;
Umarım işinizi görür.
Sevgiler,
Mustafa
*************************** START ******************************************
CREATE OR REPLACE FUNCTION "public"."eem_clonerow" (varchar, varchar,
bigint, varchar []) RETURNS bigint AS
$body$
/*
v1.0
eem_clonerow(tablename::varchar,keyfield::varchar,keyvalue::bigint,ignoredfields::varchar[]);
örnek:
stock tablosundaki id alanının değeri 123 olan satırın id,price alanları
hariç
yeni bir kopyasını tabloya ekler ve yeni kayıdın id değerini geri döndürür.
select eem_clonerow('stock','id',123,ARRAY['id','price']);
veya
select eem_clonerow('stock','id',123,'{"id","price"}');
--------------------------------------------------------
$1: tablo adı (varchar)
$2: anahtar alanın adı (varchar)
$3: anahtar alanın değeri (bigint)
$4: gözardı edilecek alanlar (varchar[])
return: yeni kayıdın anahtar alanının değeri (bigint)
*/
declare fieldlist varchar;
declare query varchar;
declare fieldinfo record;
declare newid bigint;
begin
fieldlist:='';
/*Build the field list */
for fieldinfo in select column_name from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = $1 loop
if not (fieldinfo.column_name = any ($4)) then
if fieldlist='' then
fieldlist:=fieldinfo.column_name;
else
fieldlist:=fieldlist || ',' || fieldinfo.column_name;
end if;
end if;
end loop;
/*Build the insert query & execute */
query:='insert into ' || $1 || ' (' || fieldlist || ')' || '
select ' || fieldlist || ' from ' || $1 || ' where ' || $2::varchar ||
'=' || $3 || ';select lastval();';
execute query into newid;
return newid;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
*************************** END ******************************************
Ali Dereli wrote, On 10.03.2006 11:35:
> Merhaba;
>
> 20 küsür sutunlu bir tablom var.
> bu tablodaki bir satırı klonlamak istiyorum. (serial tipli sutun hariç)
> Bu tarz bi kolaylık varmıdır?
>
> Saygılar.
From | Date | Subject | |
---|---|---|---|
Next Message | Ahmet SAVAŞ | 2006-03-10 15:57:03 | Re: ORDER BY 2 |
Previous Message | Esref Atak | 2006-03-10 13:29:34 | Re: Re: COPY ile doldurulmuş tablo |