powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как добавить полю огранич. Not Null, указав имя ограничения?
12 сообщений из 12, страница 1 из 1
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32961575
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем
Имя ограничения при создании поля Not Null - без проблем:
Код: plaintext
alter table catalogue add column uname varchar( 10 ) constraint ddd not null
Проблемы при добавлении такого ограничения полю (повторюсь, имя ограничения необходимо указать). По идее запрос должен выглядеть так:
Код: plaintext
alter table catalogue alter column uname varchar( 10 ) constraint ddd not null
. Такой запрос не проходит (ERROR: syntax error at or near "constraint" at character 42)

Каким образом можно изменить поле с nullable на not null, указав имя ограничителя?

ЗЫ: ключевое слово - изменить. Таблицы создаются без констрейнтов и наполняются данными. Ограничения должны накладываться позже.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962027
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ozПривет всем
Имя ограничения при создании поля Not Null - без проблем:
Код: plaintext
alter table catalogue add column uname varchar( 10 ) constraint ddd not null
Проблемы при добавлении такого ограничения полю (повторюсь, имя ограничения необходимо указать). По идее запрос должен выглядеть так:
Код: plaintext
alter table catalogue alter column uname varchar( 10 ) constraint ddd not null
. Такой запрос не проходит (ERROR: syntax error at or near "constraint" at character 42)

Каким образом можно изменить поле с nullable на not null, указав имя ограничителя?

ЗЫ: ключевое слово - изменить. Таблицы создаются без констрейнтов и наполняются данными. Ограничения должны накладываться позже.
Код: plaintext
alter table alter column set not null
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962028
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gamych и для тех, кто в танке - стоит задача сохранить имя ограничения.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962092
фффф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А сохраняется ли вообще имя констрейнта ddd после создания таблицы? Вроде бы ограничение типа NOT NULL - просто логическое поле в какой-то системной таблице. Во всяком случае в pg_constraint пишутся только check, primary key, unique, and foreign key constraints - а про NOT NULL ничего не сказано.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962401
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ффффА сохраняется ли вообще имя констрейнта ddd после создания таблицы? Вроде бы ограничение типа NOT NULL - просто логическое поле в какой-то системной таблице. Во всяком случае в pg_constraint пишутся только check, primary key, unique, and foreign key constraints - а про NOT NULL ничего не сказано.
воопше-то можно создать именованный _table_constraint_ CHECK(NOT afield IS NULL).


PS (Кстати в 7.3. ALTER ....ADD COLUMN ... NOT NULL не срабатывает напрочь , предлагается сначала ADD, потом ALTER COLUMN ... SET NOT NULL)
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962439
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
temp2=# CREATE TABLE stuff (
temp2(# fname   VARCHAR( 255 ),
temp2(# lname VARCHAR( 255 )
temp2(# );
CREATE TABLE
temp2=# \d stuff
            Table "public.stuff"
 Column |          Type          | Modifiers
--------+------------------------+-----------
 fname  | character varying( 255 ) |
 lname  | character varying( 255 ) |

temp2=# ALTER TABLE stuff ALTER COLUMN fname SET NOT NULL;
ALTER TABLE
temp2=# \d stuff
            Table "public.stuff"
 Column |          Type          | Modifiers
--------+------------------------+-----------
 fname  | character varying( 255 ) | not null
 lname  | character varying( 255 ) |

temp2=# select version();
                                         version

--------------------------------------------------------------------------------
----------
 PostgreSQL  8 . 0 . 1  on i686-pc-mingw32, compiled by GCC gcc.exe (GCC)  3 . 4 . 2  (mingw
-special)
( 1  row)

temp2=#
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32962490
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Ниеми
не понял. Так и в 7.3. было можно. А вот
ALTER TABLE ... Add COLUMN ... NOT NULL
в _одном_ предложении там было нельзя.


Интересно у вас там (в смысле - "где вы траву берете?")
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32964894
Фотография Niemi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
43212 Ниеми
не понял. Так и в 7.3. было можно. А вот
ALTER TABLE ... Add COLUMN ... NOT NULL
в _одном_ предложении там было нельзя.


Интересно у вас там (в смысле - "где вы траву берете?")
В смысле с первого поста не была указана версия PG, посему продемонстрировал, как это делается в последней. Это не является ответом к версии 7.3.
А трава нормальная, с подоконника.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32966124
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niemi
В смысле с первого поста не была указана версия PG, посему продемонстрировал, как это делается в последней. Это не является ответом к версии 7.3.
Существенно. Моя лажа. PG версии 8.0.1.

На самом деле на пост вы не ответили. Стоит задача добавить ограничение Not Null уже существующему полю, указав при этом имя ограничения.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32967048
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще просто нот нулл - не именнованный, а как сделать чек (это извращение, есть же штатный нот нулл) - указано выше
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32969891
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
centurвообще просто нот нулл - не именнованный, а как сделать чек (это извращение, есть же штатный нот нулл) - указано выше
По секрету и только тебе. штатный нот нулл реализуется сервером чеком c условием <имя поля> Is Not Null. Так же, как и в Oracle, FB, M$SQL и т.д. и ёпрст.
...
Рейтинг: 0 / 0
Как добавить полю огранич. Not Null, указав имя ограничения?
    #32972419
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да дело же не в этом, просто из твоего поста я понял что ты хочешь сделать то же но руками.. А зачем ? Можно в принципе и foreign key триггером накладывать... а зачем ? Будь проще и последовавшему за тобой тоже будет проще...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как добавить полю огранич. Not Null, указав имя ограничения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]