correlative insertion

From: Jorge Maturana Ortiz <ateo(at)labsd(dot)inf(dot)utfsm(dot)cl>
To: pgsql-sql(at)postgresql(dot)org
Subject: correlative insertion
Date: 1998-10-13 22:18:30
Message-ID: 3623D1B6.A3ECF2AA@labsd.inf.utfsm.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi,

I have a table 'mas' with the following composition:

Table = mas
+----------------------------------+----------------------------------+-------+

| Field | Type |
Length|
+----------------------------------+----------------------------------+-------+

| cha | char
| 1 |
| num | int4
| 4 |
+----------------------------------+----------------------------------+-------+

and this data:

cha|num
---+---
a | 1
a | 2

I want to create a function that automatically increments the number
stored in 'num' when i insert a new tuple if it contain a 'known' cha,
for example, if i insert another 'a' in the field 'cha', the num must
be 3.

I try:

create function otro(char) returns int4 as 'select 1 + max(num) from mas
where cha = $1;' language 'sql';

it works OK if i make the following:

insert into mas values ('a',otro('a'));

i obtain:

cha|num
---+---
a | 1
a | 2
a | 3

THE PROBLEM is that when i try to insert a tuple with an unknow cha,
this function don't work. I want make an insert like:

insert into mas values ('b',otro('b'));

and obtain:

cha|num
---+---
a | 1
a | 2
a | 3
b | 1

I would thank any help.

--
Jorge Maturana Ortiz
Laboratorio de Sistemas Distribuidos - Departamento de Informatica
Universidad Tecnica Federico Santa Maria, Valparaiso - Chile
mailto:ateo(at)labsd(dot)inf(dot)utfsm(dot)cl

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Eric McKeown 1998-10-14 02:24:42 dilemma
Previous Message Roberto Joao Lopes Garcia 1998-10-13 17:00:51 Re: [SQL] french caracters in Postgresql database ?