Re: satırı klonlamak,

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.

In response to

Browse pgsql-tr-genel by date

  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