Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 182
Пытаюсь удалить поле, не ключевое, ни каких ссылок на него нет:

IF((select count(*) from INFORMATION_SCHEMA.COLUMNS Where Table_name='AllMain' and column_name='old_G082') > 0)
BEGIN;
ALTER TABLE dbo.AllMain DROP COLUMN
old_G082;
END;


выдаёт:

Msg 5074, Level 16, State 1, Line 10
The object 'DF__AllMain__old_G08__1BC821DD' is dependent on column 'old_G082'.
Msg 4922, Level 16, State 9, Line 10
ALTER TABLE DROP COLUMN old_G082 failed because one or more objects access this column.


То есть типа есть какая-то зависимость от этого поля таблицы. Как это обойти?
12 авг 13, 13:00    [14696146]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Teslenko Sergey, выявить эту зависимость.
12 авг 13, 13:01    [14696158]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Teslenko Sergey
То есть типа есть какая-то зависимость от этого поля таблицы. Как это обойти?
Сначала удалить DEFAULT для old_G082.
И отказаться от использования объектов DEFAULT, RULE и т.д.
Microsoft их давно объявил устаревшими конструкциями
12 авг 13, 13:04    [14696185]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
Teslenko Sergey
То есть типа есть какая-то зависимость от этого поля таблицы. Как это обойти?
Сначала удалить DEFAULT для old_G082.
И отказаться от использования объектов DEFAULT, RULE и т.д.
Microsoft их давно объявил устаревшими конструкциями
Точнее даже не удалить объект,
а удалить его связь с old_G082.
Помнится, для этого использовались соответствующие процедуры.
12 авг 13, 13:06    [14696204]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
И отказаться от использования объектов DEFAULT, RULE и т.д.
Microsoft их давно объявил устаревшими конструкциями

"Объект DEFAULT" — это то, что создаётся командой "CREATE DEFAULT"?
У ТСа, судя по имени объекта, автоматический созданный DEFAULT CONSTRAINT:
USE tempdb;
GO
CREATE TABLE AllMain (old_G08 INT DEFAULT 0, a INT);
ALTER TABLE AllMain DROP COLUMN old_G08;
GO
'
Msg 5074, Level 16, State 1, Line 2
The object 'DF__AllMain__old_G08__108B795B' is dependent on column 'old_G08'.
Msg 4922, Level 16, State 9, Line 2
ALTER TABLE DROP COLUMN old_G08 failed because one or more objects access this column.

Перед удалением столбца надо выполнить команду:
ALTER TABLE dbo.AllMain DROP CONSTRAINT DF__AllMain__old_G08__1BC821DD
12 авг 13, 13:11    [14696259]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 182
Гость333,

А как можно посмотреть список "CONSTRAINT" для обрабатываемой таблицы?
12 авг 13, 14:15    [14696799]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Teslenko Sergey
Гость333,

А как можно посмотреть список "CONSTRAINT" для обрабатываемой таблицы?
SELECT *
FROM sys.objects
WHERE parent_object_id=OBJECT_ID(N'ИмяТаблицы','U') AND type IN('C','D','F','UQ','R');
12 авг 13, 14:26    [14696901]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Teslenko Sergey
Member

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

А ещё один вопрос, а object_id столбца это номер столбца или просто номер к которому привязано свойство или просто системный номер самого устройства? Я не совсем понимаю, как получить связь, какое свойство к какому полю относится, и следовательно, какое должно быть удалено. По графе name это не понятно!
13 авг 13, 14:18    [14702367]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Teslenko Sergey,

а справку прочесть не пробовали ?
13 авг 13, 14:36    [14702506]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Teslenko Sergey
iap,

А ещё один вопрос, а object_id столбца это номер столбца или просто номер к которому привязано свойство или просто системный номер самого устройства? Я не совсем понимаю, как получить связь, какое свойство к какому полю относится, и следовательно, какое должно быть удалено. По графе name это не понятно!
Вы о чём? О последнем запросе?
Про поля я там ничего не писал.
Только про констрейнты для определённой таблицы.
object_id - это id таблицы в данном случае.
Колонка - это не объект, для неё object_id не существует.

Вы же спрашивали про "список констрейнтов для обрабатываемой таблицы"?
Вот я про него и написал.
13 авг 13, 14:40    [14702540]     Ответить | Цитировать Сообщить модератору
 Re: Может кто-то подсказать по поводу применения DROP COLUMN  [new]
invm
Member

Откуда: Москва
Сообщений: 9844
Teslenko Sergey
Я не совсем понимаю, как получить связь, какое свойство к какому полю относится
Для дефолтов:
select
 dc.name
from
 sys.columns sc join
 sys.default_constraints dc on dc.parent_object_id = sc.object_id and dc.parent_column_id = sc.column_id
where
 sc.object_id = object_id('dbo.WGoods', 'U') and sc.name = 'Столбец';
А для других ограничений напишите самостоятельно, прочитав документацию.
Teslenko Sergey
По графе name это не понятно!
Надо не лениться и давать объектам осмысленные имена.
13 авг 13, 15:01    [14702723]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить