Re: [SQL] Question about SQL FUnction

From: tolik(at)icomm(dot)ru (Anatoly K(dot) Lasareff)
To: Martin Mderndorfer <mmoedern(at)linux(dot)stuco(dot)uni-klu(dot)ac(dot)at>
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Question about SQL FUnction
Date: 1999-02-18 07:37:50
Message-ID: 87aeyc5fht.fsf@tolikus.hq.aaanet.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

>>>>> "d" == derndorfer <Martin> writes:

d> hi,
d> i have some tables:

d> create table person (nr int4, name varchar(50));
d> create table book(nr int4, title varchar(50), persnr int4);

d> (persnr is the foreign key -> person.nr)

d> now i have some
d> CREATE FUNCTION get_new_nr(**TABLE**,**FIELDS**) RETURNS int4;
d> AS 'SELECT MAX($2) FROM $1 +1;'
d> LANGUAGE 'sql';

d> but **table** and **fields** needs some datatype. this function should
d> return the max of a set of all numbers in person (+1) and return this.

d> is it possible (and how ;-) to write such a very _flexible_ function??

d> MArtin

I think this is not possible in 'sql' and 'plpgsql' functions. You
must use Tcl or C languages for these function. But if you wont have
auto-increment unique field you can use sequences:

create sequence s_person;

create table person (
nr int default nextval('s_person') not null,
name varchar(50)
);

insert into person (name) values('itisme');
insert into person (name) values('andyou');

select * from person;
nr name
1 itisme
2 andyou

--
Anatoly K. Lasareff Email: tolik(at)icomm(dot)ru
Senior programmer

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Ghita Voda 1999-02-19 10:00:48 Insert a long text
Previous Message David Martinez Cuevas 1999-02-18 00:52:19 Re: [SQL] Question about SQL FUnction