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
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 |