Re: Fwd: Re: Referencing

Поиск
Список
Период
Сортировка
От Daryl Richter
Тема Re: Fwd: Re: Referencing
Дата
Msg-id 43677F75.9030409@brandywine.com
обсуждение исходный текст
Ответ на Re: Fwd: Re: Referencing  (lucas@presserv.org)
Список pgsql-sql
lucas@presserv.org wrote:
> Quoting Daryl Richter <daryl@brandywine.com>:
> 
>> lucas@presserv.org wrote:
>> > Quoting Daryl Richter <daryl@brandywine.com>:
>> >> It's hard to say without knowing more precisely what you are trying to
>> >> model, but I think this push you in the right direction:
>> >>
>> > Okay, but references between (output/input) and ACTIVITY tables is 1 
>> to N.
>> > OUTPUT/INPUT - 1
>> > to
>> > ACTIVITY - N.
>> > And not N to 1 how the example.
>> > Then the reference field need to be on "ACTIVITY (send/buy)" table.
>> >
>>
>> Ahh, ok.  In that case I reverse it like so:
>>
>> -- This table hold everything in common for inputs/outputs
>> create table transfer(
>> id            serial   primary key
>> );
> 
> 
> Yes, I think it was what I wanted.
> And how I check if a register in "Transfer" table is only referenciable 
> by ONE
> table (OR "output" OR "input")?? Would I create a Trigger like:
> CREATE or REPLACE FUNCTION TG_output_check() RETURNS TRIGGER AS
> $$
>  BEGIN
>   IF exists (select 1 from input where transfer_id=NEW.transfer_id) THEN
>    Raise Exception 'This activity (transfer) is alread setted to INPUT';
>   END IF;
>   RETURN NEW;
>  END;
> $$ language 'plpgsql'; CREATE TRIGGER TG_output_check BEFORE INSERT or 
> UPDATE
> on OUTPUT EXECUTE PROCEDURE TG_output_check();
> CREATE or REP...--- and the some function to INPUT ---
> 
> Or is there another way to check it?
> 
> Thank you again.
> 

Exactly, except for the small change that your trigger declaration needs 
"for each row" as shown below:

CREATE TRIGGER TG_output_check BEFORE INSERT or UPDATE on output
for each row EXECUTE PROCEDURE TG_output_check();

-- 
Daryl



В списке pgsql-sql по дате отправления:

Предыдущее
От: L van der Walt
Дата:
Сообщение: A Not Join
Следующее
От: "Jim C. Nasby"
Дата:
Сообщение: Re: [GENERAL] A Not Join