On 11/17/2013 08:40 AM, Tom Lane wrote: > That's an even worse idea than plain CREATE IF NOT EXISTS (which was > put in over vocal objections from me and some other people).
I'm pretty uncomfortable with CREATE TABLE IF NOT EXISTS too - but it doesn't hurt someone who doesn't use it and it does have uses.
We have plenty of other features that can be horribly abused too. That doesn't mean new ones should be added casually, just that it's sometimes appropriate to accept something that's imperfect when it meets a need and we don't have a better way to do it.
It'd be great if there was a sane way to implement "CREATE OR REPLACE TABLE" - since that's what people really want a lot of the time. "Ensure that at the end of this command the table looks like this". There's just no sane way to do that for a non-empty table.
I disagree - CREATE OR REPLACE FUNCTION has sense, because new function can has same interface (and will be overwriten) or different (and there will be two functions). So with CREATE OR REPLACE TABLE there are two new questions - has to new table respect original interface and what about content? I don't think so CREATE OR REPLACE TABLE is good idea.