KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
There is a table t which has inherited children. I want that only the children can receive inserts. What is the best way to force that the parent table rejects inserts? create table t (c int); create table t1 () inherits (t); This should not be possible: insert into t (c) values (1); EDIT: I found a model visible solution in addition to the one from @wildplasser: create table tfk (c integer unique check(false)); create table t (c integer, foreign key (c) references tfk(c)); Now it is not possible to insert into t UNLESS it is a null value, and still possible to insert into its children. It can be a good solution if that columnn is already constrained as not null but not enough otherwise. Or does someone know a trick to make the above work for null values? News: I asked for a new syntax in the postgresql list and it was done for 9.2: Allow CHECK constraints to be declared NO INHERIT (Nikhil Sontakke, Alex Hunsaker) This makes them enforceable only on the parent table, not on child tables.
Tags (comma-separated)
Save Edits
Cancel