Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как убрать ограничение 'NOT NULL', программно 
:(
    Опции темы
rni
Дата 3.3.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 10.3.2004

Репутация: нет
Всего: 3



Как определить столбец на NOT NULL, вроде понятно
Код

SELECT COLUMNPROPERTY(OBJECT_ID(N'TABLE'), 'Column', 'AllowsNull')


Есть ли стандарная процедура, чтобы убрать это ограничение, не  используя напрямую  Alter Table 'Table ' Alter Column 'Column' 

Написал пока через Alter Table работает, при условии что нет первичных ключей... 
Код

declare fk cursor for select table_name,column_name,data_type,CHARACTER_MAXIMUM_LENGTH, COLLATION_NAME, numeric_precision,numeric_scale 
from INFORMATION_SCHEMA.COLUMNS 
where table_name=N'table' AND IS_NULLABLE='NO'
DECLARE @column_name VARCHAR(100),
        @tb_name VARCHAR(100),
                @type_name VARCHAR(100),
                @max_len VARCHAR(10),
                @coll VARCHAR(100),
                @num_prec VARCHAR(10),
                @num_scale VARCHAR(10)
DECLARE @SQLString nVARCHAR(500)    
open fk
fetch next from fk INTO @TB_NAME,@column_name,@type_name,@max_len,@coll,@num_prec,@num_scale
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    IF @coll is not null 
      select @coll=' COLLATE '+@coll
    ELSE
      SELECT @coll=''
    if @max_len is not null 
    select @max_len=' ('+@max_len+') '
    else
      SELECT @max_len=''
    if @type_name='numeric' and @num_scale<>'0'
     SELECT @max_len=' ('+@num_prec+','+@num_scale+') ' 
    SELECT @SQLString='alter table '+ @TB_NAME+' alter column '+@column_name+' '+@type_name+' '+@max_len+@coll+ ' NULL '
    EXECUTE sp_executesql @SQLString
    fetch next from fk INTO @TB_NAME,@column_name,@type_name,@max_len,@coll,@num_prec,@num_scale
END
close fk
deallocate fk
go


Это сообщение отредактировал(а) rni - 3.3.2008, 14:38
--------------------
r-xr-xr-x 3 мусорных ведра корня 14312 9 января 2000 perl
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.