|From:||Gareth Palmer <gareth(at)internetnz(dot)net(dot)nz>|
|To:||Pg Hackers <pgsql-hackers(at)postgresql(dot)org>|
|Subject:||[PATCH] Implement INSERT SET syntax|
|Views:||Raw Message | Whole Thread | Download mbox | Resend email|
Attached is a patch that adds the option of using SET clause to specify
the columns and values in an INSERT statement in the same manner as that
of an UPDATE statement.
A simple example that uses SET instead of a VALUES() clause:
INSERT INTO t SET c1 = 'foo', c2 = 'bar', c3 = 'baz';
Values may also be sourced from a CTE using a FROM clause:
WITH x AS (
SELECT 'foo' AS c1, 'bar' AS c2, 'baz' AS c3
INSERT INTO t SET c1 = x.c1, c2 = x.c2, c3 = x.c3 FROM x;
The advantage of using the SET clause style is that the column and value
are kept together, which can make changing or removing a column or value from
a large list easier.
Internally the grammar parser converts INSERT SET without a FROM clause into
the equivalent INSERT with a VALUES clause. When using a FROM clause it becomes
the equivalent of INSERT with a SELECT statement.
There was a brief discussion regarding INSERT SET on pgsql-hackers in late
August 2009 .
INSERT SET is not part of any SQL standard (that I am aware of), however this
syntax is also implemented by MySQL . Their implementation does not support
specifying a FROM clause.
Patch also contains regression tests and documentation.
|Next Message||Tom Lane||2019-07-17 04:35:05||Re: psql ctrl+f skips displaying of one record and displays skipping one line|
|Previous Message||Thomas Munro||2019-07-17 04:18:08||Re: psql ctrl+f skips displaying of one record and displays skipping one line|