On 03/14/2012 04:44 PM, Tom Lane wrote:
> Peter Eisentraut<peter_e@gmx.net> writes:
>> On ons, 2012-03-14 at 10:27 -0400, Tom Lane wrote:
>>> That opinion seems to me to connect to the recently-posted patch to
>>> make contrib/file_fdw enforce NOT NULL constraints. Should we instead
>>> have the position that constraints declared for foreign tables are
>>> statements that we can take on faith, and it's the user's fault if
>>> they are wrong?
>> We should look into the NOT ENFORCED stuff for constraints in SQL:2011.
>> Then we can have both, and both for regular and foreign tables.
> Have both what? The key point here is that we *can't* enforce
> constraints on foreign tables, at least not with anything like the
> semantics SQL constraints normally have. Ignoring that point leads
> to nonsensical conclusions.
>
> Declaring a foreign constraint as NOT ENFORCED might be a reasonable
> thing to do, but it doesn't help us decide what to do when that clause
> isn't attached.
>
> On reflection I don't see anything much wrong with the "if you lied
> about the constraint it's your fault that things broke" position.
> It seems quite comparable to the fact that we take the user's assertions
> on faith as to the number and data types of the columns in a foreign
> table.
>
>
Maybe we should say that for foreign tables NOT ENFORCED is implied.
That seems to amount to much the same thing.
cheers
andrew