Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
может кто подскажет как можно в 2008 MS SQL убрать на существующей таблице в столбце ограничение NOT NULL ?
26 окт 09, 14:39    [7838907]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
iljy
Member

Откуда:
Сообщений: 8711
mansoff,

BOL - ALTER TABLE вам подскажет
26 окт 09, 14:42    [7838950]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
я так понял сгодиться

1) ALTER TABLE table ALTER COLUMN column_name NULL
и
2) ALTER TABLE table ALTER COLUMN column_name DROP NOT NULL

или только 2 ?
26 окт 09, 14:55    [7839075]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
Design ?
26 окт 09, 15:02    [7839149]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
mansoff
я так понял сгодиться

1) ALTER TABLE table ALTER COLUMN column_name NULL
и
2) ALTER TABLE table ALTER COLUMN column_name DROP NOT NULL

или только 2 ?
А что хелп по этому поводу говорит?
26 окт 09, 15:03    [7839157]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
хэлп выдаёт синтаксис, только я в нём как слон в посудной лавке

ALTER TABLE table 
{ [ ALTER COLUMN column_name 
    { new_data_type [ ( precision [ , scale ] ) ] 
        [ COLLATE < collation_name > ] 
        [ NULL | NOT NULL ] 
        | {ADD | DROP } ROWGUIDCOL } 
    ] 
    | ADD 
        { [ < column_definition > ] 
        |  column_name AS computed_column_expression 
        } [ ,...n ] 
    | [ WITH CHECK | WITH NOCHECK ] ADD 
        { < table_constraint > } [ ,...n ] 
    | DROP 
        { [ CONSTRAINT ] constraint_name 
            | COLUMN column } [ ,...n ] 
    | { CHECK | NOCHECK } CONSTRAINT 
        { ALL | constraint_name [ ,...n ] } 
    | { ENABLE | DISABLE } TRIGGER 
        { ALL | trigger_name [ ,...n ] } 
}

< column_definition > ::= 
    { column_name data_type } 
    [ [ DEFAULT constant_expression ] [ WITH VALUES ] 
    | [ IDENTITY [ (seed , increment ) [ NOT FOR REPLICATION ] ] ] 
        ] 
    [ ROWGUIDCOL ] 
    [ COLLATE < collation_name > ] 
    [ < column_constraint > ] [ ...n ] 

< column_constraint > ::= 
    [ CONSTRAINT constraint_name ] 
    { [ NULL | NOT NULL ] 
        | [ { PRIMARY KEY | UNIQUE } 
            [ CLUSTERED | NONCLUSTERED ] 
            [ WITH FILLFACTOR = fillfactor ] 
            [ ON { filegroup | DEFAULT } ] 
            ] 
        | [ [ FOREIGN KEY ] 
            REFERENCES ref_table [ ( ref_column ) ] 
            [ ON DELETE { CASCADE | NO ACTION } ] 
            [ ON UPDATE { CASCADE | NO ACTION } ] 
            [ NOT FOR REPLICATION ] 
            ] 
        | CHECK [ NOT FOR REPLICATION ] 
            ( logical_expression ) 
    }

< table_constraint > ::= 
    [ CONSTRAINT constraint_name ] 
    { [ { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        { ( column [ ,...n ] ) } 
        [ WITH FILLFACTOR = fillfactor ] 
        [ ON {filegroup | DEFAULT } ] 
        ] 
        |    FOREIGN KEY 
            [ ( column [ ,...n ] ) ] 
            REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] 
            [ ON DELETE { CASCADE | NO ACTION } ] 
            [ ON UPDATE { CASCADE | NO ACTION } ] 
            [ NOT FOR REPLICATION ] 
        | DEFAULT constant_expression 
            [ FOR column ] [ WITH VALUES ] 
        |    CHECK [ NOT FOR REPLICATION ] 
            ( search_conditions ) 
    }
26 окт 09, 15:50    [7839518]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
Glory
Member

Откуда:
Сообщений: 104760
mansoff
я так понял сгодиться

1) ALTER TABLE table ALTER COLUMN column_name NULL
и
2) ALTER TABLE table ALTER COLUMN column_name DROP NOT NULL

или только 2 ?

Оба не сгодятся
26 окт 09, 15:57    [7839568]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
зайди через менеджер студио -> кликни правой кнопкой на таб.-> вебери Design-> найди нужное поле и установи галочку или сними в калонке "Allow Nulls"
26 окт 09, 15:57    [7839573]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
ну и ножми сохранить
26 окт 09, 15:58    [7839578]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
ТАРАКАН, GUI не катит, только терминал
26 окт 09, 15:59    [7839593]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
В ALTER COLUMN напишите полное определение поля, как в CREATE TABLE
26 окт 09, 16:04    [7839622]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
iap, спасибо сработал ваш вариант

"ALTER TABLE table_name ALTER COLUMN column_name data_type"

пс можно совсем обнаглею и спрошу в чём разница между {} [] <> скобками в синтаксе который в хэлпе пишется ?
26 окт 09, 16:21    [7839765]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
mansoff
iap, спасибо сработал ваш вариант

"ALTER TABLE table_name ALTER COLUMN column_name data_type"

пс можно совсем обнаглею и спрошу в чём разница между {} [] <> скобками в синтаксе который в хэлпе пишется ?
Неправильно. В Вашем случае надо так:
ALTER TABLE table_name ALTER COLUMN column_name data_type NULL
Фигурные скобки означают альтернативу ("ИЛИ"). В сочетании с "|"
Квадратные скобки - необязательный элемент, который можно опустить.
26 окт 09, 16:29    [7839819]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31202
mansoff
пс можно совсем обнаглею и спрошу в чём разница между {} [] <> скобками в синтаксе который в хэлпе пишется ?
Синтаксические обозначения в Transact-SQL
26 окт 09, 16:30    [7839834]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
iap, мой вариант тоже сработал, уже проверил : )

alexeyvg, спасибо
26 окт 09, 16:47    [7839984]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
mansoff
iap, мой вариант тоже сработал, уже проверил : )

alexeyvg, спасибо
Он сработал только потому, что таковы настройки сервера, присваивающие колонке свойство NULL, если его не задавать в определении.
При переносе структуры на другой сервер это может "аукнуться".
По поводу записи синтаксиса языка можно посмотреть также Форма Бэкуса—Наура (BNF)
26 окт 09, 16:53    [7840025]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
iap, а где про эту настройку можно почитать или хотя бы название его вытащить?
я так понял database engine аля триггера что-то включает?
26 окт 09, 18:32    [7840642]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SET ANSI_NULL_DFLT_ON (Transact-SQL)
26 окт 09, 20:16    [7841037]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL NOT NULL remove  [new]
mansoff
Member

Откуда:
Сообщений: 20
iap, спасибо
27 окт 09, 10:26    [7842476]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить