[EMAIL PROTECTED] wrote:
Quoting Daryl Richter <[EMAIL PROTECTED]>:

[EMAIL PROTECTED] wrote:
> Quoting Daryl Richter <[EMAIL PROTECTED]>:
>> 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


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to