Re: create default
От | Jens Hartwig |
---|---|
Тема | Re: create default |
Дата | |
Msg-id | 3A5980BD.9302B849@debis.com обсуждение исходный текст |
Ответ на | create default ("guard" <guard@ficnet.net>) |
Список | 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 по дате отправления: