Re: create default - Mailing list pgsql-sql

From Jens Hartwig
Subject Re: create default
Date
Msg-id 3A5980BD.9302B849@debis.com
Whole thread Raw
In response to create default  ("guard" <guard@ficnet.net>)
List pgsql-sql
Sorry, there is a "bug" in my statement (according to debug issues), the
correct statement should be:

CREATE FUNCTION test() RETURNS opaque AS    'BEGIN        IF new.cno1 IS NULL THEN            IF new.cno2 IS NULL THEN
             new.cno1 := trim(new.cno3);            ELSIF new.cno3 IS NULL THEN                new.cno1 :=
trim(new.cno2);           ELSE                new.cno1 := trim(new.cno2)||trim(new.cno3);            END IF;        END
IF;       RETURN new;     END;'
 
LANGUAGE 'plpgsql';

BTW, for getting correct results, you should define cno1 as long as the
maximum length of cno2 and cno3 together (20).

Regards, Jens

Jens Hartwig schrieb:
> 
> > hi,how to set default filed+field
> >
> > create table "table1"(
> >   "cno1" char(10)  default NEW.cno2+NEW.cno3,
> >   "cno2" char(10) ,
> >   "cno3" char(10)
> > );
> >
> > I try pl/pgsql and pl/tcl  NOT RUN,
> >
> > thanks
> 
> Try the following:
> 
> CREATE FUNCTION test() RETURNS opaque AS
>     'BEGIN
>         IF new.cno1 IS NULL THEN
>             IF new.cno2 IS NULL THEN
>                 new.cno1 := substr(new.cno3,1,3);
>             ELSIF new.cno3 IS NULL THEN
>                 new.cno1 := substr(new.cno2,1,3);
>             ELSE
>                 new.cno1 := substr(new.cno2,1,3)||substr(new.cno3,1,3);
>             END IF;
>         END IF;
>         RETURN new;
>      END;'
> LANGUAGE 'plpgsql';
> 
> CREATE TRIGGER test_trg
> BEFORE INSERT OR UPDATE ON table1
> FOR EACH ROW
> EXECUTE PROCEDURE test();
> 
> INSERT INTO table1 (cno2, cno3) values ('abc', 'def');
> 
> SELECT * FROM table1;
> 
> Best regards, Jens Hartwig

=============================================
Jens Hartwig
---------------------------------------------
debis Systemhaus GEI mbH
10875 Berlin
Tel.     : +49 (0)30 2554-3282
Fax      : +49 (0)30 2554-3187
Mobil    : +49 (0)170 167-2648
E-Mail   : jhartwig@debis.com
=============================================


pgsql-sql by date:

Previous
From: Jens Hartwig
Date:
Subject: Re: create default
Next
From: Tom Lane
Date:
Subject: Re: Strange Execution-Plan for NOT EXISTS