powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
12 сообщений из 12, страница 1 из 1
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123507
Здравствуйте.
В базе одной программы, обнаружен странный объект на который ругается новая версия программы (предыдущие его успешно игнорировали)
запрос

select * from sys.all_objects
where [name] like '%имяобъекта%'

показывает

name = имяобъекта
object_id = 5575058
principal_id = NULL
schema_id = 1
parent_object_id = 0
type = D
type_desc = DEFAULT_CONSTRAINT
create_date = 2012-05-04 19:14:22.060
modify_date = 2012-05-04 19:14:22.060
is_ms_shipped = 0
is_published = 0
is_schema_published = 0

---
странность в том что parent_object_id = 0 т.е. совершенно не понятно к чему он привязан.
Удаление
DROP DEFAULT имяобъекта
выдает ошибку
Невозможно удалить по умолчанию "имяобъекта", так как она привязана к одной или нескольким столбец.

Других вариантов удаления не нашел.
Подскажите пожалуйста как его удалить.

P.S. база на сервере MS SQL Server 2019 (15.0.2000.5)
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123540
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Уэф!
странность в том что parent_object_id = 0 т.е. совершенно не понятно к чему он привязан.
Привязка не может записываться в поле parent_object_id, это же очевидно (как в одно поле записать множество значений?)

Посмотрите INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, может там есть...
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123541
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Посмотрите INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, может там есть...
Хотя это не то...
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123546
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Уэф!,

существуют ли объекты, которые ссылаются на этот?
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123548
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/ru-ru/sql/t-sql/statements/drop-default-transact-sql?view=sql-server-ver15

В общем, надо сначала отвязать объект DEFAULT от колонки (sp_unbindefault), а потом удалить.

И никогда больше не применять объект DEFAULT (его выбросят со следующей версии. Давно уже обещали)
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123559
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо же, никогда не пользовался. Музейный экспонат.
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123580
4es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4es
Гость
iap
И никогда больше не применять объект DEFAULT (его выбросят со следующей версии. Давно уже обещали)

Не объект выбросят, а команду DROP DEFAULT.
автор DROP DEFAULT will be removed in the next version of MicrosoftSQL Server. Do not use DROP DEFAULT in new development work, and plan to modify applications that currently use them. Instead, use default definitions that you can create by using the DEFAULT keyword of ALTER TABLE or CREATE TABLE.
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123615
Владислав Колосов
существуют ли объекты, которые ссылаются на этот?

select * from sys.all_objects
where parent_object_id=5575058

пусто
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123624
alexeyvg
Привязка не может записываться в поле parent_object_id, это же очевидно (как в одно поле записать множество значений?)

Может и записана. По остальным объектам типа DEFAULT_CONSTRAINT поле parent_object_id заполнено и указывает именно на тот объект к которому привязка.

Посмотрите INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE, может там есть...
Нет нету.
Нет в том числе и тех пар, что связаны по parent_object_id
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123660
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4es
Не объект выбросят, а команду DROP DEFAULT
Потому что не будет объектов для применения.
Не зря же упоминается ALTER TABLE и CREATE TABLE.
Кстати, ещё же объекты RULE были. C ними то же самое.
Жаль. Это всё очень удобно было.
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123664
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Уэф!
По остальным объектам типа DEFAULT_CONSTRAINT поле parent_object_id заполнено и указывает именно на тот объект к которому привязка.

Вполне возможно создать один, ни к чему не относящийся и не привязанный default constraint (или привязанный к нескольким колонкам в разных таблицах) - как выше уже писали, это специфика старых версий сервера:
Код: sql
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.
31.
32.
33.
34.
select @@version
go
create default test.def_test as 123
go
select name, type_desc, parent_object_id
from sys.objects where object_id=object_id('test.def_test')
go
create table test.table_test1 (n int)
go
create table test.table_test2 (n int)
go
exec sp_bindefault 'test.def_test', 'test.table_test1.n'
go
exec sp_bindefault 'test.def_test', 'test.table_test2.n'
go
insert into test.table_test1 default values;
insert into test.table_test2 default values;

select * from test.table_test1
union all
select * from test.table_test2;

select schema_name(t.schema_id) schema_name, t.name
from sys.columns c
join sys.tables t on t.object_id=c.object_id
where c.default_object_id=object_id('test.def_test')
go

drop table test.table_test1
go
drop table test.table_test2
go
drop default test.def_test
go


Код: 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.
31.
32.
33.
34.
-----------------------------------------------------------------------------
Microsoft SQL Server 2005 - 9.00.5069.00 (X64) 
	Aug 22 2012 18:02:46 
	Copyright (c) 1988-2005 Microsoft Corporation
	Enterprise Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)


(1 row affected)

name                type_desc           parent_object_id
------------------- ------------------- ----------------
def_test            DEFAULT_CONSTRAINT  0

(1 row affected)

Default bound to column.
Default bound to column.

(1 row affected)

(1 row affected)
n
-----------
123
123

(2 rows affected)

schema_name   name
------------- -------------
test          table_test1
test          table_test2

(2 rows affected)
...
Рейтинг: 0 / 0
Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
    #40123769
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господин Уэф!,

это ограничение что-то вроде пользовательского типа данных по смыслу.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как удалить DEFAULT_CONSTRAINT ни к чему не привязанный?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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