СОЗДАЙТЕ ТАБЛИЦУ КАК ВЫБРАТЬ в PostgreSQL - PullRequest
3 голосов
/ 12 октября 2011
Оператор

CREATE TABLE AS SELECT в PostgreSQL не создает новую таблицу со столбцами с ограничением NOT NULL исходной таблицы.

В моей таблице tab1 есть столбцы col1 и col2 без ненулевых ограничений.*

create table tab1 (col1 varchar(23) not null, col2 int not null)

и сейчас я создаю новую таблицу tab2 с определением и данными таблицы tab2, как показано ниже:

создать таблицуДля tab2 выберите col1, col2 из tab1

Но col1 и col2 из tab2 не имеют ограничения NOT NULL.Как получить точное состояние ограничения NOT NULL в столбцах новой таблицы с исходной таблицы?

Если есть какой-либо способ достичь этого, используйте выражение CREATE TABLE AS SELECT, которое очень приветствуется.Оператор CREATE TABLE AS SELECT в Oracle, DB2 и SELECT .. INTO в SQLServer копирует NOT NULL CONSTRAINT вместе с данными.

1 Ответ

6 голосов
/ 20 октября 2011

В PostgreSQL функциональность, которую вы ищете в

CREATE TABLE tablename 
(LIKE parent_table INCLUDING CONSTRAINTS) /* other options too */ 

CREATE TABLE AS, насколько я знаю, может использоваться с полностьюпроизвольно SELECT и PG не проверяет, включает ли это только одну таблицу, тем более пытается вывести ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...