Re: nested if , and how to trigger.... - Mailing list pgsql-general

From Stephan Szabo
Subject Re: nested if , and how to trigger....
Date
Msg-id Pine.BSF.4.21.0105051823180.69942-100000@megazone23.bigpanda.com
Whole thread Raw
In response to nested if , and how to trigger....  ("Muhammad Rusydi" <rusydi@cbn.net.id>)
List pgsql-general
On Sun, 6 May 2001, Muhammad Rusydi wrote:

> Hi,
> can we do nested if in function ? would you give me some example?

In what context?  In plpgsql, you can nest if's pretty normally:
create function f() returns int4 as '
begin
 if (1=1) then
  if (1=0) then
   raise exception ''1=0'';
  else
   raise notice ''1!=0'';
  end if;
 else
  raise exception ''1!=1'';
 end if;
 return 0;
end;' language 'plpgsql';


> second, if i've create table like this:
>
> create table tb (
> code varchar(4),
> classes varchar(6),
> lecture varchar(4),
> th int2,
> day varchar(1),
> hr varchar(1),
> room varchar(4),
> primary key (code,kl,ds));

code,kl,ds?  What are kl and
ds?

> my questions is how to prevent this record to be insert:
> code     classes  lecture      th         day   hr     room
> K021    1tip01   1011        5          1      1      1111
> K022    1tip01   1011        5          1      1      1111
>
> or :
> code     classes  lecture      th         day   hr     room
> K021    1tip01   1011        5          1      1      1111
> K021    1tip01   1012        5          1      1      1111

If code or lecture must always be unique, then use a unique
constraint.  If you can have duplicate codes if and only
if the lecture is the same and you can have duplicate lectures
if and only  if the code is the same, you'll probably need
to do a before insert/update trigger that checks for you
(and you'll need to lock the table i think so that you
can't have two transactions inserting inconsistant data
that the other can't see due to it not being committed)


pgsql-general by date:

Previous
From: "Dave Cramer"
Date:
Subject: Re: Accounting Schema
Next
From: Tom Lane
Date:
Subject: Re: Re: a primer on trigger?