From: | "chris smith" <dmagick(at)gmail(dot)com> |
---|---|
To: | fufay <fufay(at)126(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: about partitioning |
Date: | 2006-04-01 00:41:58 |
Message-ID: | 3c1395330603311641q1530e2a3x743d4dc33401fd79@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 4/1/06, fufay <fufay(at)126(dot)com> wrote:
> dear all,
> i created a master table and a sub table which inherits the main table.
> and then i made a trigger and a function that want to keep the master table
> empty.
> but the trigger didn't work anyway.when i inserted data into the table
> "news",both the master table
> and the sub table were inserted.
> why? i just want the empty master table,any good ideas?
> lots of thanks for all.
>
> here r DDls:
> -------------------------------------------------------------------------
> --master table;
> CREATE TABLE "public"."news" (
> "id" SERIAL,
> "title" VARCHAR(100) NOT NULL,
> "content" VARCHAR NOT NULL,
> "author" VARCHAR(50) NOT NULL,
> "date" DATE DEFAULT now(),
> CONSTRAINT "news_pkey" PRIMARY KEY("id")
> )WITHOUT OIDS;
>
> --rule;
> CREATE RULE "news_current_partition" AS ON INSERT TO "public"."news"
> DO INSTEAD (INSERT INTO news_001 (title, content, author) VALUES (new.title,
> new.content, new.author));
>
> --trigger;
> CREATE TRIGGER "news_triggers" BEFORE INSERT
> ON "public"."news" FOR EACH ROW
> EXECUTE PROCEDURE "public"."deny_insert"();
>
> --function;
> CREATE OR REPLACE FUNCTION "public"."deny_insert" () RETURNS trigger AS
> $body$
> BEGIN
> RETURN NULL;
> END;
> $body$
> LANGUAGE 'plpgsql' IMMUTABLE CALLED ON NULL INPUT SECURITY INVOKER;
>
> --sub table;
> CREATE TABLE "public"."news_001" (
> CONSTRAINT "news_001_date_check" CHECK ((date >= '2006-03-29'::date) AND
> (date < '2006-04-28'::date))
> ) INHERITS ("public"."news")
> WITHOUT OIDS;
Since the fields don't exist in news_001, it has to store them
somewhere - in the table it inherits from.
Inheritence is meant to be used to change something in the
substructure/child table/whatever.
If that object isn't in the child, it has to go back to the parent to
work out what to do (in your case, store the entry).
--
Postgresql & php tutorials
http://www.designmagick.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Brendan Duddridge | 2006-04-01 01:03:14 | WAL Archiving frequency |
Previous Message | Ashley Moran | 2006-04-01 00:07:59 | Re: How to use views&rules to dynamically choose which table to update |