Search Postgresql Archives

Re: transfering tables into other schema

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 17 Feb 2009 17:36:32 +0000
Sam Mason <sam@xxxxxxxxxxxxx> wrote:

> On Tue, Feb 17, 2009 at 06:20:54PM +0100, Ivan Sergio Borgonovo
> wrote:
> > I can't get how this really work.
> > You're saying that constraint, fk/pk relationships will be
> > preserved automatically... what else?
> > 
> > OK BEFORE:
> > 
> > create table x (
> >  xid primary key,
> >   ...
> > );
> > create table y (
> >  xid int referencex x (xid),
> >   ...
> > );
> > 
> > -- following in application
> > select x.a, y.b from x join y on x.xid=y.xid;
> > 
> > -- following in the DB
> > create or replace function xy() as
> > $$
> > begin
> > 	select x.a, y.b from x join y on x.xid=y.xid;
> > ...
> > end;
> > $$ ...
> > 
> > ALTER TABLE y SET SCHEMA new_schema;
> > 
> > What should I change by hand?
> 
> Sorry, I could have been clearer...  Nothing in function xy()
> needs to change because you don't explicitly refer to any schema
> anywhere.  If your tables had been created in the "public" schema,
> as per default, and your code was:

So... somehow everything is going to happen by magic if everything
was in public schema... mmm

create language 'plpgsql';

create schema new_schema;

create table x(
        xid int primary key,
        a varchar(2)
);
create table y(
        xid int references x(xid),
        b varchar(2)
);

create or replace function x(out varchar(2), out varchar(2)) returns
setof record
as
$$
begin
        return query select a,b from x join y on x.xid=y.xid;
end;
$$ language plpgsql;

test=# select * from x();
 column1 | column2
---------+---------
(0 rows)

alter table y set schema new_schema;

test=# SELECT * from x();
ERROR:  relation "y" does not exist
CONTEXT:  SQL statement " select a,b from x join y on x.xid=y.xid"
PL/pgSQL function "x" line 2 at RETURN QUERY
test=# SELECT a,b from x join new_schema.y on y.xid=x.xid;
 a | b
---+---
(0 rows)

I did a similar test changing x schema with similar results.
So, pk/fk relationships survive. Function don't survive.

Do constraints survive?

I'm running 8.3.6

-- 
Ivan Sergio Borgonovo
http://www.webthatworks.it


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux