Search Postgresql Archives

altering foreign key without a table scan

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

 



Hi list,

as part of a db schema update, I'd like to alter the "on update" property of a 
fkey, for example going from :
> ALTER TABLE ONLY foo ADD CONSTRAINT foo_barid_fkey FOREIGN KEY (barid)
> REFERENCES bar(id) ON UPDATE CASCADE ON DELETE CASCADE;
to :
> ALTER TABLE ONLY foo ADD CONSTRAINT foo_barid_fkey FOREIGN KEY (barid)
> REFERENCES bar(id) ON UPDATE RESTRICT ON DELETE CASCADE;

I understand I can create the new fkey and drop the old one, but this requires 
a scan of the table (to check that no existing data violates the new fkey) 
which, on this large, heavily-updated, no-downtime table I can't really aford.

The thing is, I know there is no violation by existing data, because of the 
existing fkey. So locking and scaning the table to add the "duplicate" fkey is 
not necessary. In a sense, I'm looking for :
> ALTER TABLE foo ALTER CONSTRAINT foo_barid_fkey ON UPDATE RESTRICT;
I'm guessing/wishfull-thinking that some hackery with the system catalog could 
emulate that ?

I'm currently using postgres 8.3 (we want to upgrade, but it's hard to 
schedule).


Thanks in advance.

-- 
Vincent de Phily


-- 
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