Re: [SQL] Question about SQL FUnction - Mailing list pgsql-sql

From tolik@icomm.ru (Anatoly K. Lasareff)
Subject Re: [SQL] Question about SQL FUnction
Date
Msg-id 87aeyc5fht.fsf@tolikus.hq.aaanet.ru
Whole thread Raw
In response to Question about SQL FUnction  (Martin Möderndorfer <mmoedern@linux.stuco.uni-klu.ac.at>)
List 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@icomm.ru
Senior programmer

pgsql-sql by date:

Previous
From: David Martinez Cuevas
Date:
Subject: Re: [SQL] Question about SQL FUnction
Next
From: Ghita Voda
Date:
Subject: Insert a long text