On 11/1/24 13:47, Thiemo Kellner wrote:
It looks to me basically to be a "create table A as select * from B where 
false".

No it more capable then that.

CREATE TABLE <some_tbl> AS <some_other_tbl> is bare bones, you get the column names, types and data(or not) and that is it.

CREATE TABLE <some_tbl> LIKE <some_other_tbl> has like_option which allows to transfer over more attributes of the table, for example defaults, constraints, indexes, etc.

See

https://www.postgresql.org/docs/current/sql-createtable.html

LIKE source_table [ like_option ... ]



01.11.2024 20:38:15 Adrian Klaver <adrian.kla...@aklaver.com>:

On 11/1/24 12:16, thi...@gelassene-pferde.biz wrote:
Thanks, I shall have a look into it. I was under the assumption the the create 
table like would create no more than a structural copy.

Not sure what you mean by structural copy, but the table created by CREATE 
TABLE LIKE will not have any association with the table it was created from.

https://www.postgresql.org/docs/current/sql-createtable.html

"Unlike INHERITS, the new table and original table are completely decoupled after 
creation is complete. Changes to the original table will not be applied to the new table, 
and it is not possible to include data of the new table in scans of the original 
table."

Torsten Förtsch <tfoertsch...@gmail.com <mailto:tfoertsch...@gmail.com>> 
escribió:
Thiemo,
it looks to me like you are using inheritance just to make sure your SOURCES and 
TOPO_FILES tables have some common columns. If you are not actually querying the 
TEMPLATE_TECH table and expect to see all the rows from the other 2 tables in that one 
table combined, then you could use CREATE TABLE (LIKE ...) instead of inheritance. That 
way your "child" tables would become normal tables and you could use 
declarative partitioning on them.
Even if you are querying the TEMPLATE_TECH table, you could still do that by 
turning the TEMPLATE_TECH table into a view which performs a UNION ALL over the 
other tables.


--
Adrian Klaver
adrian.kla...@aklaver.com



--
Adrian Klaver
adrian.kla...@aklaver.com



Reply via email to