Re: Foreign Keys
От | David Gardner |
---|---|
Тема | Re: Foreign Keys |
Дата | |
Msg-id | 49698F79.3090602@gardnerit.net обсуждение исходный текст |
Ответ на | Foreign Keys (mltasmaniac@tasjackson.com) |
Ответы |
Re: Foreign Keys
|
Список | pgsql-novice |
I am not sure I know of an elegant solution to this, but I can think of two possible solutions. One is to change the primary key on table 2 to a serial type, and place a unique constraint on the acro column. Then change your foreign key in table 1 to an integer type. The problem is you have to do a little more work in your user interface, and you are forced to always perform a join on table 2 to find out the value of acro. In table 2 you could add a second column called acro_uppercase that contains the same data in all uppercase. Then point your foreign key in table 1 to that column, then add a trigger to table 1 to convert the typed in data to upper case. Only thing is now if you want to display the acro in a user friendly way you are forced to perform a join against table 2. The trigger could look something like this (if you go this route you might also want to use the trim() function as well): CREATE FUNCTION mk_upper() RETURNS trigger AS $mk_upper$ BEGIN NEW.acro := upper(NEW.acro); RETURN NEW; END; $mk_upper$ LANGUAGE plpgsql; CREATE TRIGGER table_1_acro BEFORE INSERT OR UPDATE ON table_1 FOR EACH ROW EXECUTE PROCEDURE mk_upper(); http://www.postgresql.org/docs/8.3/static/plpgsql-trigger.html mltasmaniac@tasjackson.com wrote: > Hi List, > > Ok I apologize if this is obvious etc but ..... > > 2 tables (trying to keep question simple) > > table 1 > tbl_id primary key > tbl2_acro foreign key table2.acro > other_col > > table 2 > acro primary key > > OK person that knows what they are doing puts data into table 2 > > acro > Nm > aB > fiL > 2 Ac > aC > > > ok heres the thing if someone now tries to put data into table 1 tbl2_acro > must exist in table 2. My problem is how can I get it accept the tbl2_acro > typed as eg nM, Nm or NM but still return Nm. As naturally if you type nM > or NM or nm it returns a foreign key violation. Is this possible from > the dbase level or is it more the front end level? As various users will > have various ways of tying (naturally). > > Does this make sense? :) > > Peter Jackson > > > -- David Gardner
В списке pgsql-novice по дате отправления: